JSON详解

来源:互联网 发布:色情网络 网站 大香蕉 编辑:程序博客网 时间:2024/06/02 19:41

 JSON简介:

  • JSON(全称JavaScript Object Notation)是一种轻量级的数据交换格式(比xml更轻巧)。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。
  • JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包,同时,在表达相同的信息时,JSON比XML形成的文件更小、更便于机器解析。

  一、JSON的构建规则:

        (1)   对象:无序的“‘名称/值’对”集合。一个对象以“{”开始,以“}”结束。每个“名称”后跟一个“:”,“‘名称/值’对”之间使用“”分隔。
        (2)   数组:值(value)的有序集合。一个数组以“[”开始,“]”结束。值之间使用“”分隔。其中,值(value)可以是双引号括起来的字符串(String)、数值(number)、true、false、null、对象(object)或者数组(array)。这些结构可以嵌套。

     var user =         {             id:1,         name:"sandy",         age:20,            info: { tel: "6586894",cellphone: "15895459875"},            address: [                       {city:"beijing",postcode:"454897"},                             {city:"newyork",postcode:"555666"}                    ]        } 
  二、JSON的读取与修改
     alert(user.name);         alert(user.info.cellphone);        alert(user.address[0].city);        alert(user.address[0].postcode);     user.name = "Tom";       user.address[0].city="shanghai"
  三、JSON解析

       (1) 使用javasript提供的eval()可以对JSON快速解析成对象数组。   

       var obj = eval(response.responseText);        Ext.Array.each(obj,function(o){       //遍历对象数组           alert(o.name+o.value);   //(name/value)       });

      (2) 使用JSON-lib框架解析JSON。

           1> 下载JSON-lib工具包及其相关依赖jar包

               1. json-lib-2.4-jdk15-javadoc.jar
               2. jakarta commons-lang 2.5
               3. jakarta commons-beanutils 1.8.0
               4. jakarta commons-collections 3.2.1
               5. jakarta commons-logging 1.1.1
               6. ezmorph 1.0.6

               官方网址:http://json-lib.sourceforge.net/

           2>  JSONObject和JSONArray的应用

                 1.  直接创建JSON对象                 

          JSONObject jsonObject = new JSONObject();              jsonObject.put("id",new Integer(200)            jsonObject.put("name","Tom");          jsonObject.put("man",Boolean.TRUE);              jsonObject.put("city",new String[]{"beijin","shanghai"}); //数组              jsonObject.put("func", "function(i){return this.city[i];}");           jsonObject.element("address", "福建省厦门市");  //直接在jsonObject后面追加属性元素
                   输出结果:[“id”: 200, “name”:"Tom", “man”:True, “city”:[ “beijin”, “shanghai”], “func”:function(i){return this.city[i];}",'address':"福建省厦门市"]
          JSONArray jsonArray = new JSONArray();          jsonArray.add(0, "this is a jsonArray value");          jsonArray.add(1, "another jsonArray value");          jsonObject.element("jsonArray", jsonArray);          JSONArray array = jsonObject.getJSONArray("jsonArray");   //在jsonObject后添加一个JSONArray对象

                  输出结果:{"jsonArray":["this is a jsonArray value","another jsonArray value"]}

                2.  java对象与JSON字符串互转           

           User u = new User();           response.getWriter().write(JSONObject.fromObject(u).toString()); //java对象->JSON字符串                      jsonObject = JSONObject.fromObject(json);           User u = (User) JSONObject.toBean(jsonObject);  //JSON字符串->java对象

               3.  将java List集合与JSON字符串 互转  

          List<User> list = service.queryUser();          response.getWriter().write(JSONArray.fromObject(list).toString());   //list集合->JSON字符串                   json = "[" + json + "]";         jsonArray = JSONArray.fromObject(json);         List<User> list = JSONArray.toList(jsonArray);    //JSON字符串->list集合    


扩展阅读:http://www.json.org/

Json-lib在线API: http://json-lib.sourceforge.net/apidocs/jdk15/index.html


原创粉丝点击