Files
notes_estom/JavaScript/EcmaScript/17 json.md
2024-01-13 17:25:31 +08:00

44 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
JSON 全称为 JavaScript Object Notation译为 JavaScript 对象表示法。是一种轻量级的数据交换格式。
官网地址: [http://www.json.org/json-zh.html](http://www.json.org/json-zh.html)
JSON 易于开发者阅读和编写也易于计算机解析和生成。它基于JavaScript Programming LanguageStandard ECMA-262 3rd Edition - December 1999的一个子集。
JSON 采用完全独立于语言的文本格式,被 Java、C#、C++、PHP、OC 等几乎所有主流语言所支持。
JSON 作为一种轻量级的文本数据交换格式,已被广泛使用于存储和交换文本数据领域。
## 语法规则
JSON 构建于两种语法结构:
- “名称 / 值”对的集合。在 JavaScript 中被解释为 对象。
![](16.png)
- 值的有序列表。在 JavaScript 中被解释为 数组。
![](17.png)
JSON 存储数据的类型可以是字符串string、数值(number)、true、false、 null、对象object或者数组array。这些结构可以嵌套。
![](18.png)
## JavaScript 中的 JSON
JavaScript 中使用字符串String来表示 JSON 的两种结构。
- “名称 / 值”对的集合。
```javascript
var jsonTxt = ' {
"ename" : "Tom",
"salary" : 3500,
"isMarried" : true
} ';
```
- 值的有序列表。
```javascript
var jsonTxt =' [ "Tom", "Mary", "John" ] ';
```
> **值得注意的是:** 字符串必须用双引号括起来。
## JSON 对象
JavaScript 提供了 JSON 对象,该对象具有两种方式:
| 方法名 | 描述 |
| --- | --- |
| JSON.parse() | 解析JSON字符串可以选择改变前面解析后的值及其属性然后返回解析的值。|
| JSON.stringify() | 返回指定值的 JSON 字符串,可以自定义只包含某些特定的属性或替换属性值。|
> **值得注意的是:** IE 8 版本之前(包含 8 版本)并不支持 JSON 对象。必须下载 json2.js 或 json3.js 工具解决此问题。
- json2.js 的下载地址:[https://github.com/douglascrockford/JSON-js](https://github.com/douglascrockford/JSON-js)
- json3.js 的下载地址:[https://bestiejs.github.com/json3](https://bestiejs.github.com/json3)
## JSON 转换为 JavaScript
将 JSON 转换为 JavaScript 具有两种方式:
- 利用 JavaScript 中的 eval() 函数。该函数用于执行以字符串String形式出现的JavaScript代码。
```javascript
var jsonTxt = ' { "x": 60, "y": 30 } ';
var jsObj = eval( "(" + jsonTxt + ")" ) ;
```
> **值得注意的是:**
>
> - 根据 eval() 的严格语法要求,其接收的参数只能是 string 类型,而不能是 String 类型!
> - 使用 eval() 将 JSON 字符串解析为 JavaScript 对象时,若不添加左右的小括号,会抛出 SyntaxError。
- 利用 JavaScript 中 JSON 对象的 parse() 方法。
```javascript
var jsonTxt = ' { "x": 60, "y": 30 } ';
var jsObj = JSON.parse( jsonTxt );
```
## JavaScript 转换为 JSON
利用 JavaScript 中 JSON 对象的 stringify() 方法将 JavaScript 转换为 JSON。
```javascript
var jsObj = { 'x': 60, 'y': 30 } ;
console.log( typeof JSON.stringify( jsObj ) );
```