您的位置:首页 > Web前端 > JavaScript

JSON详解

2012-05-12 09:53 411 查看
 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息