JSON(JavaScript Object Notation)仅仅是一种数据格式(或者叫数据形式)。数据格式其实就是一种规范,按照这种规范来存诸和交换数据。就好像 XML 格式同样。javascript
区别 | Json | Javascript对象 |
---|---|---|
含义 | 仅仅是一种数据格式 | 对象的实例 |
传输 | 能够跨平台数据传输,速度快 | 不能传输 |
表现 | 1. 键值对 2. 键必须加双引号 3. 值不能为方法函数/undefined/NaN |
1.键值对 2.值能够是函数、对象、字符串、数字、boolean 等 |
相互转换 | Json → JS 对象: 1. var obj = JSON.parse(jsonstring); 2. var obj = eval("("+jsonstring+")"); |
JS 对象 → Json:JSON.stringify(obj); |
JSON 文本格式在语法上与建立 JavaScript 对象的代码相同,但本质是不一样的。咱们不能把如下的对象叫 JSON,好比:java
var obj1 = {}; // 这只是 JS 对象 // 可把这个称作:JSON 格式的 JavaScript 对象 var obj2 = {"width":100,"height":200,"name":"rose"}; // 可把这个称作:JSON 格式的字符串 var str1 = '{"width":100,"height":200,"name":"rose"}'; // 这个可叫 JSON 格式的数组,是 JSON 的稍复杂一点的形式 var arr = [ {"width":100,"height":200,"name":"rose"}, {"width":100,"height":200,"name":"rose"}, {"width":100,"height":200,"name":"rose"}, ]; // 这个可叫稍复杂一点的 JSON 格式的字符串 var str2='['+ '{"width":100,"height":200,"name":"rose"},'+ '{"width":100,"height":200,"name":"rose"},'+ '{"width":100,"height":200,"name":"rose"},'+ ']';
但 JSON 和 JavaScript 确实存在渊源,JSON 自己的意思就是 JavaScript 对象表示法(JavaScript Object Notation),能够说这种数据格式是从 JavaScript 对象中演变出来的。JSON 语法是 JavaScript 对象表示法语法的子集。编程
JSON 格式的数据,主要是为了跨平台交流数据用的。JSON 独立于语言和平台,JSON 解析器和 JSON 库支持许多不一样的编程语言。json
一、JSON 语法规则:数组
数据在名称/值对中浏览器
数据由逗号分隔安全
花括号保存对象数据结构
方括号保存数组编程语言
二、JSON 数据值:函数
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组(在方括号中)
对象(在花括号中)
null
JSON 数据结构有两种,这两种结构就是对象和数组,经过这两种结构能够表示各类复杂的结构。
JSON 使用严格的 JavaScript 对象表示法来表示结构化的数据,所以 JSON 的属性名必须有双引号。
{
"company": "Apple", "age": 18, "IPO", true, "employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" } ] }
一、JS 解析器:eval() 函数
// 建立包含 JSON 语法的 JavaScript 字符串 var txt = '{ "employees" : [' + '{ "firstName":"John" , "lastName":"Doe" },' + '{ "firstName":"Anna" , "lastName":"Smith" },' + '{ "firstName":"Peter" , "lastName":"Jones" } ]}'; //使用 JS 解析器,解析 JSON 文本并生成 JS 对象 var obj = eval("(" + txt + ")");
使用 eval() 函数时,必须为传入的 JSON 数据参数添加括号'()',不然会报语法错误。
二、 解析器:parse()函数
但 eval() 的问题在于,除了能够解析 JSON 数据,也能够用于执行 JavaScript 脚本片断,这就会带来潜在的安全问题。JSON 提供了专门的 JSON Parser 来实现只用于解析 JSON 数据,不会执行 JavaScript 脚本,并且速度更快。以下:
var obj = JSON.parse(txt);
较新的浏览器和最新的 ECMAScript (JavaScript) 标准中均包含了原生的对 JSON 的支持。
使用 JSON.strigify() 函数,将 Javascript 对象转换为 JSON 文本数据。
var obj = {a:1,b:2} var txt = JSON.stringify(obj); console.log(txt); 结果: "{"a":1,"b":2}"