JSON

JSON对象

  JSON(JavaScript Object  Notation)一种简单的数据格式,比xml更轻巧。JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包。 

  JSON的规则很简单:对象是一个无序的“‘名称:值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。

 

  规则如下:

   1)映射用冒号(“:”)表示。名称:值

       2)并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2

       3) 映射的集合(对象)用大括号(“{}”)表示。{名称1:值1,名称2:值2}

       4) 并列数据的集合(数组)用方括号(“[]”)表示。

         [

           {名称1:,名称2:2},

           {名称1:,名称2:2}

         ]

      5)  元素值可具有的类型:string, number, object, array, true, false, null 

JSON 示例

  JSON 用冒号(而不是等号)来赋值。每一条赋值语句用逗号分开。整个对象用大括号封装起来。可用大括号分级嵌套数据。

  对象描述中存储的数据可以是字符串,数字或者布尔值。对象描述也可存储函数,那就是对象的方法。

1、传统方法和JSON比较

 1 <script type="text/javascript">
 2               //2、使用json格式来定义对象
 3             var p ={
 4                 "id":1118,
 5                 name:"小胜",//这里值的双引号不能省略,而键的双引号可以省略
 6                 gender:"男"
 7             }
 8             alert(p.id+p.name+p.gender);
 9             
10             
11             /*//1、传统方式下js定义类
12             function person(id,name,gender){
13                 this.id = id;
14                 this.name = name;
15                 this.gender = gender;
16             }
17             //传统方式下定义对象
18             var p0 = new person(18,"hacket","男");
19             //显示该用户信息
20             alert(p0.id+p0.name+p0.gender);*/
21           </script>

 

2、多个json对象建立

 1 <script type="text/javascript">
 2                   var p =[//1、定义多个对象,用[]方括号,多个对象之间用逗号(,)隔开,最后一个不用逗号
 3                     
 4                     {id:1,name:"hacket1",gender:"男1"},
 5                     {id:2,name:"hacket2",gender:"男2"},
 6                     {id:3,name:"hacket3",gender:"男3"}
 7                 ]
 8                   for(var i=0;i<p.length;i++){//2、通过p[i].id来调用某一个对象的值
 9                     window.alert(p[i].id+":"+p[i].name+":"+p[i].gender);
10                 }
11           </script>

 

3、一个对象中有1个对象有多个对象

1                 var p = {
2                     "province":[
3                         {"city":"广州"},
4                         {city:"佛山"},
5                         {city:"江门"}
6                     ]
7                 };
8                 alert("我去过:"+p.province[2].city);

 

4、一个对象中有多个对象有多个对象

 1                 var p = {
 2                     "province1":[
 3                         {city:"长沙"},
 4                         {city:"衡阳"},
 5                         {city:"永州"}
 6                     ],
 7                     "province2":[
 8                         {city:"广州"},
 9                         {city:"江门"},
10                         {city:"深圳"}
11                     ]    
12                 };
13                   alert(p.province1[1].city);
14                 alert(p.province2[1].city);

 

5、精简版

1                 var p = {
2                     "province":["广州","深圳","佛山"]
3                 }    
4                 alert(p.province.length);
5                 alert(p.province[1]);

 

总结:

数值型、布尔型和key不需要双引号,值需要双引号
一个大括号{}代表一个对象,多个对象用[]括号

解析 JSON

JSON 只是一种文本字符串。它被存储在 responseText 属性中
为了读取存储在 responseText 属性中的 JSON 数据,需要根据 JavaScript 的 eval 函数。
函数 eval 会把一个字符串当作它的参数。然后这个字符串会被当作 JavaScript 代码来执行。因为 JSON 的字符串就是由 JavaScript 代码构成的,所以它本身是可执行的
代码实例:

使用第三方工具解析 JSON

 1 import java.util.ArrayList;
 2 import java.util.List;
 3 
 4 import net.sf.json.JSONArray;
 5 import net.sf.json.JsonConfig;
 6 import cn.itcast.web.ajax.domain.Province;
 7 
 8 //使用第三方工具将JavaBean或集合转成Json字符串
 9 public class TestJson {
10     public static void main(String[] args) {
11         
12         Province p1 = new Province(1,"广东省");
13         Province p2 = new Province(1,"湖南省");
14         Province p3 = new Province(1,"广西省");
15         List<Province> provinceList = new ArrayList<Province>();
16         provinceList.add(p1);
17         provinceList.add(p2);
18         provinceList.add(p3);
19         
20         JsonConfig jsonConfig = new JsonConfig();
21         //设置JavaBean在转换成JSON字符串时,不包含id属性
22         jsonConfig.setExcludes(new String[]{"id"});
23         //通过JavaBean对象创建JSONArray对象
24         JSONArray jsonArray = JSONArray.fromObject(provinceList,jsonConfig);
25         //将JavaBean对象转成JSON格式字符串
26         String jsonString = jsonArray.toString();
27         //显示
28         System.out.println(jsonString);
29     }
30 }
 1 //省份[JavaBean]
 2 public class Province {
 3     private int id;
 4     private String name;
 5     public Province(){}
 6     public Province(int id, String name) {
 7         this.id = id;
 8         this.name = name;
 9     }
10     public int getId() {
11         return id;
12     }
13     public void setId(int id) {
14         this.id = id;
15     }
16     public String getName() {
17         return name;
18     }
19     public void setName(String name) {
20         this.name = name;
21     }
22 }

 

 

 

posted @ 2013-05-08 20:38  hacket520  阅读(516)  评论(1编辑  收藏  举报