JSON = JavaScript Object Notation,顾名思义,是一种用JavaScript表示(描述)对象的一种方法(记法),D. Crockford在
RFC4627
中的定义为:
JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.
1)JSON是一种轻量级的,基于文本的,语言无关的数据交换格式。简单扼要的一句话,就说明了什么是JSON。
轻量级——与SGML、XML相比较而言,借用JSON作者的话说,是一种 Fat-Free Alternative to XML
(去掉了XML的脂肪,留下了XML的骨感风韵)。
基于文本——采用XML的成功作法,而且由于要做“语言无关的数据交换格式”,基于文本是必须的。
语言无关——虽然是从ECMAScript衍生而来,但由于只采用了ECMAScript中的数据表示法,可以很容易地在其它语言中实现,并非特别绑定于ECMAScript。
数据交换——由于JSON衍生自程序语言,天生用于描述结构化的数据。而XML由于出自“文档世家”SGML,所以天性适合于描述文档。当然,XML的描述能力比JSON要强,可以描述半结构化数据,而JSON只适合于描述结构化的数据。
2)是从ECMAScript程序设计语言衍生而来的。
JSON采用了ECMAScript语言的数据(对象、数组以及其它标量数据)表示法。
3)JSON定义了几条简单的格式化规则用于表示可移植的结构化数据。
格式化规则体现于下面的语法定义。
2、语法
D. Crockford在 www.json.org
中给出了JSON的语法定义:
object {}
{
members
}
members pair
pair ,
members pair string
:
value array
[]
[
elements elements value
value ,
elements value string
number
object
array
true
false
null
由此可以看出,JSON的语法特简单!
3. 例子
下面是一个 D. Crockford给出的例子
:
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
其等价的XML表示为:
<glossary>
<title>example glossary</title>
<GlossDiv>
<title>S</title>
<GlossList>
<GlossEntry>
<ID>SGML</ID>
<SortAs>SGML</SortAs>
<GlossTerm>Standard Generalized Markup Language</GlossTerm>
<Acronym>SGML</Acronym>
<Abbrev>ISO 8879:1986</Abbrev>
<GlossDef>
<para>A meta-markup language, used to create markup languages such as DocBook.</para>
<GlossSeeAlso>SGML</GlossSeeAlso>
<GlossSeeAlso>XML</GlossSeeAlso>
</GlossDef>
<GlossSee>markup</GlossSee>
</GlossEntry>
</GlossList>
</GlossDiv>
</glossary>
再比如:
[
{
name:"Michael",
email:" 17bity@gmail.com
",
homepage:" http://www.jialing.net
"
},
{
name:"John",
email:" john@gmail.com
",
homepage:" http://www.jobn.com
"
},
{
name:"Peggy",
email:" peggy@gmail.com
",
homepage:" http://www.peggy.com
"
}
]
JSON的基本格式如下:
·对象是属性、值对的集合。一个对象的开始于"{",结束于"}"。每一个属性名和值间用":"提示,属性间用","分隔。
·数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。
·值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。
·字符串的定义和C或Java基本一致。
·数字的定义也和C或Java基本一致。
JSON VS XML
·可读性
JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。
·可扩展性
XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。
·编码难度
XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。
·解码难度
XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。
JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.
1)JSON是一种轻量级的,基于文本的,语言无关的数据交换格式。简单扼要的一句话,就说明了什么是JSON。
轻量级——与SGML、XML相比较而言,借用JSON作者的话说,是一种 Fat-Free Alternative to XML
基于文本——采用XML的成功作法,而且由于要做“语言无关的数据交换格式”,基于文本是必须的。
语言无关——虽然是从ECMAScript衍生而来,但由于只采用了ECMAScript中的数据表示法,可以很容易地在其它语言中实现,并非特别绑定于ECMAScript。
数据交换——由于JSON衍生自程序语言,天生用于描述结构化的数据。而XML由于出自“文档世家”SGML,所以天性适合于描述文档。当然,XML的描述能力比JSON要强,可以描述半结构化数据,而JSON只适合于描述结构化的数据。
2)是从ECMAScript程序设计语言衍生而来的。
JSON采用了ECMAScript语言的数据(对象、数组以及其它标量数据)表示法。
3)JSON定义了几条简单的格式化规则用于表示可移植的结构化数据。
格式化规则体现于下面的语法定义。
2、语法
D. Crockford在 www.json.org
object
pair
value
number
object
array
3. 例子
下面是一个 D. Crockford给出的例子
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
其等价的XML表示为:
<glossary>
<title>example glossary</title>
<GlossDiv>
<title>S</title>
<GlossList>
<GlossEntry>
<ID>SGML</ID>
<SortAs>SGML</SortAs>
<GlossTerm>Standard Generalized Markup Language</GlossTerm>
<Acronym>SGML</Acronym>
<Abbrev>ISO 8879:1986</Abbrev>
<GlossDef>
<para>A meta-markup language, used to create markup languages such as DocBook.</para>
<GlossSeeAlso>SGML</GlossSeeAlso>
<GlossSeeAlso>XML</GlossSeeAlso>
</GlossDef>
<GlossSee>markup</GlossSee>
</GlossEntry>
</GlossList>
</GlossDiv>
</glossary>
再比如:
[
{
name:"Michael",
email:" 17bity@gmail.com
homepage:" http://www.jialing.net
},
{
name:"John",
email:" john@gmail.com
homepage:" http://www.jobn.com
},
{
name:"Peggy",
email:" peggy@gmail.com
homepage:" http://www.peggy.com
}
]
JSON的基本格式如下:
·对象是属性、值对的集合。一个对象的开始于"{",结束于"}"。每一个属性名和值间用":"提示,属性间用","分隔。
·数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。
·值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。
·字符串的定义和C或Java基本一致。
·数字的定义也和C或Java基本一致。
JSON VS XML
·可读性
JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。
·可扩展性
XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。
·编码难度
XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。
·解码难度
XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。