前端JSON使用总结

时间:2022-03-15 00:12:23

JSON: JavaScript Object Notation(JavaScript 对象表示法)的简称。

1. 什么是 JSON ?

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)。

JSON 是轻量级的文本数据交换格式,是存储和交换文本信息的语法。类似 XML,但比 XML 更小、更快,更易解析。

JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。

JSON 具有自我描述性,更易理解。

JSON 实例如下:

{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

这个 employee 对象是包含 3 个员工记录(对象)的数组。

2. JSON语法规则

JSON 语法是 JavaScript 对象表示法语法的子集。

(1). 数据在名称/值对中

JSON 数据的书写格式是:名称/值对。

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

"firstName" : "John"

等价于下面的JavaScript 语句:

firstName = "John"。

JSON 值可以是:数字(整数或浮点数), 字符串(在双引号中), 逻辑值(true 或 false), 数组(在方括号中), 对象(在花括号中), null。

(2). 数据由逗号分隔

(3). 花括号保存对象

JSON 对象在花括号中书写, 对象可以包含多个名称/值对:

{ "firstName":"John" , "lastName":"Doe" }

与下面的JavaScript 语句等价:

firstName = "John"
lastName = "Doe"

(4)     方括号保存数组

JSON 数组在方括号中书写,数组可包含多个对象:

{

"employees": [

{ "firstName":"John" , "lastName":"Doe" },

{ "firstName":"Anna" , "lastName":"Smith" },

{ "firstName":"Peter" , "lastName":"Jones" }

]

}

在上面的例子中,对象 "employees" 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。

3. JSON 文件

JSON 文件的文件类型是 ".json"结尾的文件。

JSON 文本的 MIME 类型是 "application/json"。

4. JSON 使用 JavaScript 语法。

因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。

通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:

var employees = [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName": "Jones" }
];

可以像这样访问 JavaScript 对象数组中的第一项:

employees[0].lastName;

返回的内容是:

Doe

可以像这样修改数据:

employees[0].firstName = "Jonatan";

5. JSON转换为JavaScript 对象。

JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。由于这种相似性,JavaScript程序无需解析器就能够使用内建的 eval() 函数用 JSON 数据生成原生的 JavaScript 对象。

6. JSON与与 XML的异同

与 XML 相同之处:

(1). JSON 是纯文本

(2).JSON 具有"自我描述性"(人类可读)

(3). JSON 具有层级结构(值中存在值)

(4). JSON 可通过 JavaScript 进行解析

(5). JSON 数据可使用 AJAX 进行传输

与 XML 不同之处:

  (1). 没有结束标签

(2). 更短

(3).读写的速度更快

(4).能够使用内建的 JavaScript eval() 方法进行解析

(5).使用数组

  (6).不使用保留字

故而,对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:

使用 XML的解析步骤:

读取 XML 文档

使用 XML DOM 来循环遍历文档

读取值并存储在变量中

使用 JSON

读取 JSON 字符串

  用 eval() 处理 JSON 字符串

7. JSON 使用案例

7.1 把 JSON 文本转换为 JavaScript 对象

JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。

为了简单讲解,我们使用字符串作为输入进行演示(而不是文件)。

创建包含 JSON 语法的 JavaScript 字符串:

var txt = '{ "employees" : [' +
'{ "firstName":"John" , "lastName":"Doe" },' +
'{ "firstName":"Anna" , "lastName":"Smith" },' +
'{ "firstName":"Peter" , "lastName":"Jones" } ]}';

由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

var obj = eval ("(" + txt + ")"); 

在网页中使用 JavaScript 对象:

<p>
First Name: <span id="fname"></span><br />
Last Name: <span id="lname"></span><br />
</p> <script>
document.getElementById("fname").innerHTML = obj.employees[1].firstName
document.getElementById("lname").innerHTML = obj.employees[1].lastName
</script>

完整案例如下:

<!DOCTYPE html>
<html>
<body>
<h2>Create Object from JSON String</h2>
<p>
First Name: <span id="fname"></span><br>
Last Name: <span id="lname"></span><br>
</p>
<script>
var txt = '{"employees":[' +
'{"firstName":"John","lastName":"Doe" },' +
'{"firstName":"Anna","lastName":"Smith" },' +
'{"firstName":"Peter","lastName":"Jones" }]}'; var obj = eval ("(" + txt + ")"); document.getElementById("fname").innerHTML=obj.employees[1].firstName
document.getElementById("lname").innerHTML=obj.employees[1].lastName
</script>
</body>
</html>

效果如下所示:

aaarticlea/png;base64,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" alt="" />

7.2 JSON 解析器

eval() 函数可编译并执行任何 JavaScript 代码。这隐藏了一个潜在的安全问题。使用 JSON 解析器将 JSON 转换为 JavaScript 对象是更安全的做法。JSON 解析器只能识别 JSON 文本,而不会编译脚本。在浏览器中,这提供了原生的 JSON 支持,而且 JSON 解析器的速度更快。较新的浏览器和最新的 ECMAScript (JavaScript) 标准中均包含了原生的对 JSON 的支持。

Web 浏览器支持 Web 软件支持
  • Firefox (Mozilla) 3.5
  • Internet Explorer 8
  • Chrome
  • Opera 10
  • Safari 4
  • jQuery
  • Yahoo UI
  • Prototype
  • Dojo
  • ECMAScript 1.5

对于较老的浏览器,可使用 JavaScript 库: https://github.com/douglascrockford/JSON-js

完整案例如下:

<!DOCTYPE html>
<html>
<body>
<h2>Create Object from JSON String</h2>
<p>
First Name: <span id="fname"></span><br>
Last Name: <span id="lname"></span><br>
</p>
<script>
var txt = '{"employees":[' +
'{"firstName":"John","lastName":"Doe" },' +
'{"firstName":"Anna","lastName":"Smith" },' +
'{"firstName":"Peter","lastName":"Jones" }]}'; obj = JSON.parse(txt); document.getElementById("fname").innerHTML=obj.employees[1].firstName
document.getElementById("lname").innerHTML=obj.employees[1].lastName
</script>
</body>
</html>

效果如下所示:

aaarticlea/png;base64,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" alt="" />