JSON 数据解析笔记

来源:互联网 发布:c语言汉化版 编辑:程序博客网 时间:2024/06/03 12:22

网上的酱油贴太多,自己调试了下,总结下JSON字符串的解析。

比如以下这个JSON数据字符串:


String jsonString="[{\"A1\":1,\"A2\":2,\"AList\":[{\"AA1\":\"aa1\",\"AA2\":\"aa2\"},{\"AB1\":\"ab1\",\"AB2\":\"ab2\"}]}]";


其JSON数据结构为:

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [  
  2.  {  
  3.    "A1":1,  
  4.    "A2":2,  
  5.    "AList":  
  6.           [  
  7.              {  
  8.                 "AA1":"aa1",  
  9.                 "AA2":"aa2"  
  10.              },  
  11.              {  
  12.                 "AB1":"ab1",  
  13.                 "AB2":"ab2"  
  14.              }  
  15.           ]  
  16. }]  


我总结了下,这么理解,JSON就在简单不过了。

  • “[]”  代表的是数组(JSONArray ),和各大语言中的数组定义一样一样的哈~
  • “{}” 代表的是对象(JSONObject),大括号在各大语言中是类或者函数的域区分符,我们想到Class 是类,然后想到对象 object, 就可以形象生动的认为,大括号对之间的就是一个对象。
  • 双引号在JSON中有两个作用:
  • ----------1)所有属性名字都要用双引号
  • ----------2)如果属性的值是字符串,也要用双引号
  • 冒号 放在 属性 和 值 之间
  • 逗号用于隔开每个属性,或者 是每个object
  • 属性必须包含在object中,不能直接包含在数组中。
  • 数组是指对象的数组,不是属性的数组。

还有2个规则 :

1)属性的值可以是一个数组,也可以是一个对象,但是不能是多个对象,(多个对象一定要建立数组)

2)一个JSON数据结构可以没有中括号,但是一般不可以没有{},因为对象是存放属性的最小单位。


另外解析的时候需要注意:

1)JSONArray 只可以用 元素下标来访问对象,并且其初始化用的的字符串必须要用“[”开头,“]”结尾。

比如:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. String jsonString="[{\"A1\":1,\"A2\":2,\"AList\":[{\"AA1\":\"aa1\",\"AA2\":\"aa2\"},{\"AB1\":\"ab1\",\"AB2\":\"ab2\"}]}]";  
  2.                JSONArray jsonGroupListByHeadLetter=new JSONArray(jsonString);   
  3.                JSONObject arrayGroupList= jsonGroupListByHeadLetter.getJSONObject(0);  


2)JSONObject 只可以用属性名来访问,并且其初始化用的字符串必须要用"{"开头 ,“}” 结尾。

比如:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. String jsonString="{\"A1\":1,\"A2\":2,\"AList\":[{\"AA1\":\"aa1\",\"AA2\":\"aa2\"},{\"AB1\":\"ab1\",\"AB2\":\"ab2\"}]}";  
  2.                JSONObject obj= new JSONObject(jsonString);  
  3.                obj.getInt("A1");  

3)如果我们要获得某个对象属性的值,必须要知道这个值是什么类型的(说明JSON没有多态性),比如你要取一个整型的值,那么必须要用

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. aJSONObject.getInt("属性名");  
同理,如果你要访问的属性的值是一另一个JSON数组,那么需要这么访问:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. JSONObject arrayGroupList= jsonGroupListByHeadLetter.getJSONObject(0);  
  2.            JSONArray temp = arrayGroupList.getJSONArray("AList");  
  3.             
0 0
原创粉丝点击