json

json:javascript对象表示法(JavaScript Object Notation)。
json是轻量级的文本数据交换格式。
json使用javascript语法来描述数据对象,但是json独立于语言和平台。


为什么要使用json?
对于ajax应用程序来说,json比xml更快更易用。
类似XML
1、json是纯文本
2、json具有“自我描述性”(开发者可读)
3、json具有层级结构(值中存在值)
4、json可通过javascript进行解析
5、json数据可使用ajax进行传输
不同于XML
1、没有结束标签
2、更短
3、读写的速度更快
4、能够使用内建javascript eval()方法进行解析
5、使用数组
6、不使用保留字

json语法

1、数据在名称/值对中
    名称必须在双引号中
    json的值可以是以下几种类型
    * 数字
    * 字符串--在双引号中
    * 逻辑值true或false
    * 数组--在方括号中
    * 对象--在花括号中
    * null
2、数据由逗号分隔
3、花括号保存数据
4、方括号保存数组

 

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

2、JSON 解析器 JSON.parse()
eval() 函数可编译并执行任何 JavaScript 代码。这隐藏了一个潜在的安全问题。
JSON 解析器只能识别 JSON 文本,而不会编译脚本。
所以使用 JSON 解析器将 JSON 转换为 JavaScript 对象是更安全的做法。
比如将下面代码中的某个值换成alert(123);
eval()会编译js代码先弹出123再执行下面内容,如果是window.location.href=""那就直接跳转页面了
而parse()会报错不执行

var jsondata = ‘{"staff": [{"name": "洪七", "age": alert(123)}, {"name": "欧阳", "age": "72"}, {"name": "南帝", "age": "69"}]}‘
    var jsonobj = eval("("+ jsondata +")");
    alert(jsonobj.staff[0].name);
    var jsonobj2 = JSON.parse(jsondata);
    alert(jsonobj2.staff[1].name);

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。