JSON 基础

本文介绍了JSON(JavaScript Object Notation)的基础概念,包括其轻量级、基于文本和语言无关的特点,详细阐述了JSON的语法结构及与XML的区别,并通过实例对比展示了JSON的简洁性和易用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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输的真是没话说。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值