JS中涉及到的JSON以及JSON数据的剖析

JSON是什么?

  • 定义

JSON(JavaScript Object Notation) 是一种轻量级的数据交换花样,一样也是一种经常运用的数据交换花样,与XML相似。它采纳键值对的体式格局来构造。

  • 花样

JSON数据的誊写花样是:称号/值对 如:{name:value,...}
逗号相隔的为同级元素,还可嵌套包括多层。

以下:

{"list1":[{"name":"A","sex":"female"},{"name":"B","sex":"female"},...],"list2":[{"name":"X","sex":"male"},{"name":"Y","sex":"male"},...],...}
  • 两种构造

从上面的代码就能够看出 list1为下面{"name":"A","sex":"female"},{"name":"B","sex":"female"},...的父层(list2同理)所以说,json既能够表达一个简朴的key/value,也能够表达一个庞杂的Map或List。
简朴说,json就是由javascript中的对象和数组组合而成,所以这两种构造就是对象和数组两种构造,经由过程这两种构造能够示意种种庞杂的构造。

1.数字(整数或浮点数)
2.字符串(双引号中)
3.逻辑值(true 或 false)
4.数组(在方括号中)
5.对象(在花括号中)
6.null

  • 长处

1.易于人们浏览和编写,同时也易于机械剖析和天生;
2.是独立于言语的,也就是说不管什么言语,都能够剖析json,只需按json划定规矩来就好;
3.json相关于XML来讲,长度小,可大大减小带宽(收集传输中);
4.json读写速率比XML快。

JSON数据的剖析

关于json的剖析有两种体式格局:eval()JSON.parse()

 var jsonobj = eval('('+jsondata+')');
 var jsonobj = JSON.parse(jsondata); 

平常,在代码中运用eval()是很风险的!特别是用其实行第三方的JSON数据(包括恶意代码)时,尽量运用JSON.parse()剖析,该要领还能够捕获JSON中的语法毛病。

比方:

var jsondata = {
    "staff":[
        {"name":"A","age":alert(123)},
        {"name":"B","age":30},
        {"name":"C","age":35}
    ]
}
var jsonobj = eval('('+jsondata+')'); //会实行alert(123)
alert(jsonobj.staff[0].name);//再弹出"A"

eval()并不会推断js中的字符串是不是正当,而且还会实行个中的js代码。所以说不管什么时候在js中运用eval()都风险。

var jsondata = {
    "staff":[
        {"name":"A","age":alert(123)},
        {"name":"B","age":30},
        {"name":"C","age":35}
    ]
}
var jsonobj = JSON.parse(jsondata); //会在控制台抛出毛病--->字符串不正当(语法毛病)
alert(jsonobj.staff[0].name);//不实行

现实中运用JSON.parse()来剖析json数据很合适。

    原文作者:Koalari
    原文地址: https://segmentfault.com/a/1190000006753709
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞