[转帖]   JSON_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4443 | 回复: 1   主题: [转帖]   JSON        下一篇 
funny
注册用户
等级:中校
经验:1529
发帖:111
精华:4
注册:2013-3-13
状态:离线
发送短消息息给funny 加好友    发送短消息息给funny 发消息
发表于: IP:您无权察看 2013-3-19 12:31:05 | [全部帖] [楼主帖] 楼主

一。定义

JSON(JavaScript Object Notation),类似于XML,是一种数据交换格式,比如JAVA产生了一个数据想要给JavaScript,则除了利用XML外,还可以利用JSON;

易于人阅读和编写,同时也易于机器解析和生成。

它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 

JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

从定义我们可以总结出几个关键点:

轻量级

数据交换格式

易于编写和阅读

基于JavaScript的一个子集

纯文本独立于语言和平台

重点是它以纯文本存储,可以独立于任何语言和平台,且主要用于数据交换。

比如JSON适用于:数据交换,尤其跨平台的数据交换,表示JavaScript对象

注:JSON并不是一个文档格式,没有*.json的文档,一般JSON格式的文档存在txt中,而XML可以是一个标准;

二。json 解析示例

public static void JsonParsexml(){
      try {
            // xml 转换成json格式(获得json 对象)
            JSON json = new XMLSerializer().readFromStream(Parsexml.class.getClassLoader().getResourceAsStream("json.xml"));
            System.out.println("json=="+json);
            // 格式化 json 对象
            JSONArray jo = JSONArray.fromObject(json.toString());
            System.out.println(jo.toString(1));
            JsonConfig jsonConfig = new JsonConfig();
            jsonConfig.setArrayMode(JsonConfig.MODE_LIST);
            jsonConfig.setRootClass(JsonBean.class);
            List<JsonBean> jsonBeans = (List<JsonBean>) JSONSerializer.toJava(jo, jsonConfig);
            for (JsonBean jsonBean : jsonBeans) {
                  System.out.println("jsonBean.getCron()="jsonBean.getCron());
                  System.out.println("jsonBean.getJobClass()="jsonBean.getJobClass());
                  System.out.println("jsonBean.getName()="jsonBean.getName());
            }
            System.out.println("jsonConfig=="+jsonConfig);
      } catch (Exception e) {
            e.printStackTrace();
      }
}
public static class JsonBean {
      String name;
      String cron;
      String jobClass;
      。。。//提供get、set方法
}


三。与java交换示例

//ShowEmpServlet.java java处理 拼接成json格式的数据

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

response.setCharacterEncoding("UTF-8");

request.setCharacterEncoding("UTF-8");

PrintWriter out = response.getWriter();

String empno=request.getParameter("empno"); 

EmployeeDAO dao=new EmployeeDAO();

StringBuffer buffer=new StringBuffer();

buffer.append("{");

if(empno!=null && !"".equals(empno.trim())){

Employee employee=dao.findById(Long.parseLong(empno));

if(employee!=null){

buffer.append("'status':'yes',")

                .append("'empno':'").append(empno).append("',")

                .append("'ename':'").append(employee.getEname()).append("',")

                .append("'sex':'").append(employee.getSex()).append("',")

                .append("'hiredate':'").append(employee.getHiredate()).append("'");

}else {

buffer.append("'status':'no'");

}

} else {

buffer.append("'status':'input'");

}

buffer.append("}");

System.out.println("拼接后的Str==="+buffer);

out.write(buffer.toString());

out.flush();

out.close();

}

//ajax提交

<script type="text/javascript">

$(document).ready(function (){

$('#eid').blur(function (){ 

                    $.post(

                       'ShowEmpServlet',{'empno':$('#eid').val()},

                       function (data){

var str=eval(data);

if(str.status==='yes'){

                       $('#eid').attr('value',str.empno);

                       $('#ename').attr('value',str.ename);

                       

                       if(str.sex==='M'){

                           $('#sex1').attr('value','M').attr('checked',true);

                       }if(str.sex==='F'){

                          $('#sex2').attr('value','F').attr('checked',true);

                       }

                       $('#hiredate').attr('value',str.hiredate);

                       $('#div1').empty(); 

                       $('#ADDbutt').attr('disabled',true);

                       $('#UPbutt').attr('disabled',false);

}else if(str.status==='no'){

                        $('#ename').attr('value','');

                        $('#sex1').attr('value','M').attr('checked',false);

                        $('#sex2').attr('value','F').attr('checked',false);

                        $('#hiredate').attr('value','');

                                 $('#div1').empty().append("对不起,没有您要查找的信息,请重新输入或重新添加");

                                 $('#ADDbutt').attr('disabled',false);

                                 $('#UPbutt').attr('disabled',true);   

}else if(str.status==='input'){

                             $('#ename').attr('value','');

                        $('#sex1').attr('value','')

                        $('#sex2').attr('value','')

                        $('#hiredate').attr('value','');

                        $('#div1').empty().append("请输入编号");

}

                       },'json');

});

});

</script>

<body>

      员工编号:<input type="text" name="eid" id="eid"><br>

      <div id="div1" style="color: green"></div>

      员工姓名:<input type="text" name="ename" id="ename"><br>

      员工性别:男<input type="radio" name="sex" value="M" id="sex1">

               女<input type="radio" name="sex" value="F" id="sex2"><br>

      入职时间:<input type="text" name="hiredate" id="hiredate"><br>

      <input type="button" value="修改" id="UPbutt" disabled="disabled">

      <input type="button" value="添加" id="ADDbutt" disabled="disabled">

</body>


四。总结:

(1)JSON的数据结构只有两种;

(2)可以嵌套表示,比如Array中可以嵌套Object等;

(3)记住:Object是以{'':'','':'',...}表示,Array是以[{},{},...]表示;




赞(0)    操作        顶端 
xpisme
注册用户
等级:少校
经验:1117
发帖:65
精华:0
注册:2015-6-29
状态:离线
发送短消息息给xpisme 加好友    发送短消息息给xpisme 发消息
发表于: IP:您无权察看 2015-7-2 11:58:43 | [全部帖] [楼主帖] 2  楼

北京联动北方科技有限公司



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论