今天我们来讲一下JSON是什么以及JSON本身具有的优势和json的使用方法
首先我们来介绍一下JSON的概念:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。
- JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
- JSON 是轻量级的文本数据交换格式
- JSON 独立于语言 *
- JSON 具有自我描述性,更易理解
JSON类似于XML
- JSON 是纯文本
- JSON 具有“自我描述性”(人类可读)
- JSON 具有层级结构(值中存在值)
- JSON 可通过 JavaScript 进行解析
- JSON 数据可使用 AJAX 进行传输
但是和XML也有不同的地方
- 没有结束标签
- 更短
- 读写的速度更快
- 能够使用内建的 JavaScript eval() 方法进行解析
- 使用数组
- 不使用保留字
-
我们使用JSON的原因:
对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用。
JSON的优势:JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
JSON的语法及使用方法:
JSON的语法是JavaScript的对象表示语法的子集
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
名称/值对包括字段名称
"firstname" : "zhonglin"
这就等价于JavaScript里面的
firstName = "zhonglin"
JSON 对象在花括号中书写:
对象可以包含多个名称/值对:
{ "firstName":"zhonglin" , "lastName":"li" }
等价于这条JavaScript语句:
firstName = "zhonglin"
lastName = "li"
JSON 数组
JSON 数组在方括号中书写:
数组可包含多个对象:
{
"people": [
{ "firstName":"yun" , "lastName":"ma" },
{ "firstName":"zhonglin" , "lastName":"li" },
{ "firstName":"yue" , "lastName":"Jia" }
]
}
在上面的例子中,对象 “people” 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。
我们一般使用JSON的方法就是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。
JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。
接下来我们先创建一个最简单的JSON实例,来自字符串的对象
var txt = '{ "people" : [' +
'{ "firstName":"yun" , "lastName":"ma" },' +
'{ "firstName":"zhonglin" , "lastName":"li" },' +
'{ "firstName":"Thomas" , "lastName":"Carter" } ]}';
因为JSON是JS语法的子集,所以我们可以使用JS的函数eval()将一个JSON对象转化成一个JavaScript对象。eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。
这里有一点我们需要注意一下:
必须把文本包围在括号中,这样才能避免语法错误
首先我们var一个对象obj
var obj = eval ("(" + txt + ")");
然后我们在http中使用对象:
First Name: <span id="firstname"></span><br />
Last Name: <span id="lastname"></span><br />
<script type="text/javascript">
document.getElementById("firstname").innerHTML = obj.people[1].firstName
document.getElementById("lastname").innerHTML = obj.people[1].lastName
</script>
eval() 函数可编译并执行任何 JavaScript 代码。
这里需要注意的是:
这里可能存在潜在的安全问题
所以我们更安全的一种编译和执行JavaScript代码的方式是:
使用 JSON 解析器将 JSON 转换为 JavaScript 对象是更安全的做法。JSON 解析器只能识别 JSON 文本,而不会编译脚本。
在浏览器中,这提供了原生的 JSON 支持,而且 JSON 解析器的速度更快。
JSON 文件的文件类型是 “.json”
JSON 文本的 MIME 类型是 “application/json”
对于较老的浏览器可使用 JavaScript 库:https://github.com/douglascrockford/JSON-js
JSON 格式最初是由 Douglas Crockford 制定的。