什么是JSON?JSON的数据格式?JSON和XML的对比

时间:2018-12-25 09:34:25   来源:上海尚学堂   阅读:

一、什么是JSON

JSON,全称是 JavaScript Object Notation,即 JavaScript 对象标记法。这是一种 轻量级 (Light-Weight)、 基于文本的 (Text-Based)、 可读的 (Human-Readable)格式,是一种用于数据交换的文本格式,诞生于 2001 年由Douglas Crockford提出,目的是取代繁琐笨重的XML格式。这种格式不仅人很容易进行阅读和编写,同时机器也很容易解析和生成,是当前十分流行的数据格式,尤其是在前端领域。

二、JSON数据格式

JSON数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小,易于解析这种语言。客户端JavaScript可以简单的通过eval()进行JSON数据的读取,包括ActionScript, C, C#, ColdFusion,Java,JavaScript,Perl,PHP,Python,Ruby等语言服务器端语言, 便于服务器端的解析。各语言对JSON支持的特别好,自从Ajax的流行,JSON格式传输就更流行了。JSON常被用作序列化。


JSON 无论对于人,还是对于机器来说,都是十分便于阅读和书写的,而且相比 XML 文件更小;
JSON 格式的创始人声称此格式永远不升级,这就表示这种格式具有长时间的稳定性;

JSON格式有两个显著的优点:
书写简单,一目了然;
符合JavaScript原生语法,可以由解释引擎直接处理,不用另外添加解析代码。JSON已经成为各大网站交换数据的标准格式,并被写入ECMAScript 5,成为标准的一部分。
  
简单说,每个JSON对象,就是一个值。要么是简单类型的值,要么是复合类型的值,但是只能是一个值,不能是两个或更多的值。这就是说,每个JSON文档只能包含一个值。

三、JSON对值的类型和格式有严格的规定

1)、复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。

2)、简单类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。

3)、字符串必须使用双引号表示,不能使用单引号。

4)、对象的键名必须放在双引号里面。

5)、数组或对象最后一个成员的后面,不能加逗号。

PS: 需要注意的是,空数组和空对象都是合格的JSON值,null本身也是一个合格的JSON值。

四、JSON 的语法规则

JSON 的语法规则十分简单,可称得上“优雅完美”,总结起来有:
数组(Array)用方括号(“[]”)表示。
对象(Object)用大括号(”{}”)表示。
名称/值对(name/value)组合成数组和对象。
名称(name)置于双引号中,值(value)有字符串、数值、布尔值、null、对象和数组。
并列的数据之间用逗号(“,”)分隔
 

//json对象{
    "name": "Geoff Lui",
    "age": 26,
    "isChinese": true
}
//“名称/值对”里,值可以是数组和对象,例如:{
    "name": "Geoff Lui",
    "age": 26,
    "isChinese": true,
    "friends":["Lucy", "Lily", "Gwen"],
    "Mother": {
        "name": "Mary Lui",
        "age": 54
    }
}

 
ES5新增了JSON对象,用来处理JSON格式数据。它有两个方法:JSON.stringify()和JSON.parse()。

五、JSON和XML对比?

1、可读性
看了网上的各种帖子,有说可读性相当,不过基本是说XML可读性好,我认为还凑合。可以打平手。

2、可扩展性
有人说,“XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。不过 JSON在Javascript主场作战,可以存储Javascript复合对象,有着XML不可比拟的优势”。我赞同一半,我觉得这些帖子都是老帖子,XML可以灵活扩展是因为各种语言有支持的其他Jar包,类库等。

但自从JSON火起来后,JSON的支持包,类库等,相信每个语言都很多。像Java就有Jackson、goson、json-lib、FastJson等等多的去了。

3、编码难度
XML有有DOM,SAX,STAX等解析技术,JSON也有我上面说的那些,都OK。

4、解码难度

同上。

5、解码编码效率
呵呵!解析XML有专用CPU、你造吗?

这就是JSON详情解析了,学会了吗?相关更多Java、web前端技术学习资料请联系客服小姐姐获取。
分享:0

电话咨询

客服热线服务时间

周一至周五 9:00-21:00

周六至周日 9:00-18:00

咨询电话

021-67690939
15201841284

微信扫一扫