JavaScript:JSON 和 JS 对象

区分

JSON(JavaScript Object Notation)仅仅是一种数据花样(或许叫数据情势)。数据花样实在就是一种范例,根据这类范例来存诸和交换数据。就好像 XML 花样一样。

区分JsonJavascript对象
寄义仅仅是一种数据花样对象的实例
传输能够跨平台数据传输,速率快不能传输
表现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,比方:

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 库支撑很多差别的编程言语。

语法

1、JSON 语法划定规矩:

  • 数据在称号/值对中

  • 数据由逗号分开

  • 花括号保留对象

  • 方括号保留数组

2、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" }
    ]
}

数据转换

JSON 数据转换为 JS 对象

1、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 数据参数增加括号'()’,不然会报语法错误。

2、 剖析器:parse()函数

但 eval() 的问题在于,除了能够剖析 JSON 数据,也能够用于实行 JavaScript 剧本片断,这就会带来潜伏的安全问题。JSON 供应了特地的 JSON Parser 来完成只用于剖析 JSON 数据,不会实行 JavaScript 剧本,而且速率更快。以下:

var obj = JSON.parse(txt);

较新的浏览器和最新的 ECMAScript (JavaScript) 规范中均包括了原生的对 JSON 的支撑。

JS 数据转换为 JSON 文本

运用 JSON.strigify() 函数,将 Javascript 对象转换为 JSON 文本数据。

var obj = {a:1,b:2}
var txt = JSON.stringify(obj);
console.log(txt);
效果:
"{"a":1,"b":2}"
    原文作者:Teraflopst
    原文地址: https://segmentfault.com/a/1190000005943794
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞