- JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式
JSON基于两种结构
JSON[1] 结构有两种结构[2]
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}
的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易
理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象
几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为
["java","javascript","vb",...],
取值方式和所有语言中一样,使用索引获取,
字段值的类型可以是 数字、字符串、数组、对象几种。
{
"animals": {
"dog": [
{
"name": "Rufus",
"age":15
},
{
"name": "Marty",
"age": null
}
]
}
}
JSON和XML的比较
--可读性
JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。
--可扩展性
XML天生有很好的扩展性,JSON当然也有,没有什么是XML可以扩展而JSON却不能扩展的。不过JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。
--编码难度
XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有提供的工具。无工具的情况下,相信熟练的开发人员一样能很快的写出想要的xml文档和JSON字符串,不过,xml文档要多很多结构上的字符。
--解码难度
XML的解析方式有两种:
一是通过文档模型解析,也就是通过父标签索引出一组标记。例如:xmlData.getElementsByTagName("tagName"),但是这样是要在预先知道文档结构的情况下使用,无法进行通用的封装。
另外一种方法是遍历节点(document 以及 childNodes)。这个可以通过递归来实现,不过解析出来的数据仍旧是形式各异,往往也不能满足预先的要求。