json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组2种结构,通过这两种结构可以表示各种复杂的结构。
比如:
{
"data": {
"csum": "32e5cdf9c5452488c92180d0b03b5b04335b3b09b9f057f2313e996b340ca7f425176d9dc89401c3fddc0f7cec6b96c65b9c287b76891b3f51e89871e21470dc39ef3098923bba74288fb65ba97b2b5ff7cc21460fe3d8a295c629c9d64de9e7fbcae2dc43f375151741d0ad82a42b9c3eaa6282f943ee378e3ef2e380a2c5d22dd0504b3448ddff470b346ef1dd55b0e4d98b51f3859ed74da81d43ff68d59d61def6c08ed98d9bdd8c18de89fce6907d301446cd8029ea7c6328d78cf892b4ed9e08cee74561cf27f1196ac13c2e6468ad6706b0c6b5bb78f2cc6d9d6ba9864167214f10020c4347cc9cc81b21006b54f91e8cfb9c8a6df850199e8794fa28ec1a4d78d4e9ed8208bd40836618eb3ab13d7f5840d31cfa0932768d599d1696f8b25c60a2389e28b75ed4af0d014255",
"file_id": "8fb2cfad-67a9-49a8-b6b1-40014b57dbd7",
"host": "hz.qqdisk.ftn.qq.com",
"port": 80
},
"ret": 0
}
1、对象:对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”扩起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了
JSON示例:
按照最简单的形式,可以用下面这样的 JSON 表示"名称 / 值对":
{ "firstName": "Brett" }
这个示例非常基本,而且实际上比等效的纯文本"名称 / 值对"占用更多的空间:
firstName=Brett
但是,当将多个"名称 / 值对"串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个"名称 / 值对"的 记录,比如:
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }
从语法方面来看,这与"名称 / 值对"相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。
JSON与XML的数据结构的比较:
XML和JSON都使用结构化方法来标记数据,下面来做一个简单的比较。
用XML表示中国部分省市数据如下:
<?xml version="1.0" encoding="utf-8"?>
<country>
<name>中国</name>
<province>
<name>黑龙江</name>
<cities>
<city>哈尔滨</city>
<city>大庆</city>
</cities>
</province>
<province>
<name>广东</name>
<cities>
<city>广州</city>
<city>深圳</city>
<city>珠海</city>
</cities>
</province>
<province>
<name>台湾</name>
<cities>
<city>台北</city>
<city>高雄</city>
</cities>
</province>
<province>
<name>**</name>
<cities>
<city>乌鲁木齐</city>
</cities>
</province>
</country>
用JSON表示如下:
{
name:"中国",
province:[
{
name:"黑龙江",
cities:{
city:["哈尔滨","大庆"]
}
},
{
name:"广东",
cities:{
city:["广州","深圳","珠海"]
}
},
{
name:"台湾",
cities:{
city:["台北","高雄"]
}
},
{
name:"**",
cities:{
city:["乌鲁木齐"]
}
}
]
}
编码的可读性,xml有明显的优势,毕竟人类的语言更贴近这样的说明结构。json读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过json的索引.province[0].name就能够读取“黑龙江”这个值。
编码的手写难度来说,xml还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是密密麻麻的有用数据,而xml却包含很多重复的标记字符。