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