天天看点

JSON 数据解析笔记

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

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

string jsonstring="[{\"a1\":1,\"a2\":2,\"alist\":[{\"aa1\":\"aa1\",\"aa2\":\"aa2\"},{\"ab1\":\"ab1\",\"ab2\":\"ab2\"}]}]";

其json数据结构为:

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

“[]”  代表的是数组(jsonarray ),和各大语言中的数组定义一样一样的哈~

“{}” 代表的是对象(jsonobject),大括号在各大语言中是类或者函数的域区分符,我们想到class 是类,然后想到对象 object, 就可以形象生动的认为,大括号对之间的就是一个对象。

双引号在json中有两个作用:

----------1)所有属性名字都要用双引号

----------2)如果属性的值是字符串,也要用双引号

冒号 放在 属性 和 值 之间

逗号用于隔开每个属性,或者 是每个object

属性必须包含在object中,不能直接包含在数组中。

数组是指对象的数组,不是属性的数组。

还有2个规则 :

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

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

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

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

比如:

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

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

同理,如果你要访问的属性的值是一另一个json数组,那么需要这么访问: