JSON
作者:互联网
JSON是存储和交换文本信息的语法,类似于XML。JSON比XML更小、更快、更易解析
JSON 与 XML 的相同之处:
- JSON 和 XML 数据都是 "自我描述" ,都易于理解。
- JSON 和 XML 数据都是有层次的结构
- JSON 和 XML 数据可以被大多数编程语言使用
JSON 与 XML 的不同之处:
- JSON 不需要结束标签
- JSON 更加简短
- JSON 读写速度更快
- JSON 可以使用数组
最大的不同是:XML 需要使用 XML 解析器来解析,JSON 可以使用标准的 JavaScript 函数来解析。
- JSON.parse(): 将一个 JSON 字符串转换为 JavaScript 对象。
- JSON.stringify(): 于将 JavaScript 值转换为 JSON 字符串。
为什么 JSON 比 XML 更好?
XML 比 JSON 更难解析。
JSON 可以直接使用现有的 JavaScript 对象解析。
针对 AJAX 应用,JSON 比 XML 数据加载更快,而且更简单:
使用 XML
- 获取 XML 文档
- 使用 XML DOM 迭代循环文档
- 接数据解析出来复制给变量
使用 JSON
- 获取 JSON 字符串
- JSON.Parse 解析 JSON 字符串
JSON对象包含多个key/value键值对。key必须是字符串,value可以是合法的JSON数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)
可以使用点号(.)来访问对象的值
var myObj, x; myObj = { "name":"runoob", "alexa":10000, "site":null }; x = myObj.name;
也可以使用中括号([])来访问对象的值
var myObj, x; myObj = { "name":"runoob", "alexa":10000, "site":null }; x = myObj["name"];
使用for-in来循环对象的属性
var myObj = { "name":"runoob", "alexa":10000, "site":null }; for (x in myObj) { console.log(x)
console.log(myObj[x]) }
使用for-in来循环访问数组
{ "name":"网站", "num":3, "sites":[ "Google", "Runoob", "Taobao" ] } for (i in myObj.sites) { x += myObj.sites[i] + "<br>"; }
删除对象属性
delete myObj.sites.site1; delete myObj.sites["site1"]
delete运算符并不是彻底删除元素,而是删除它的值,但仍会保留空间。delete只会将该值置为undefined,而不会影响数组长度。
JSON.Parse()
将JSON数据转为JavaScript对象
语法:JSON.parse(text[, reviver])
- text:必需, 一个有效的 JSON 字符串。
- reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。
JSON不能存储Date对象,如果需要存储Date对象,需要将其转换为字符串,之后再将字符串转为Date对象
var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}'; var obj = JSON.parse(text); obj.initDate = new Date(obj.initDate);
可以启用JSON.parse的第二个参数reviver
var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}'; var obj = JSON.parse(text, function (key, value) { if (key == "initDate") { return new Date(value); } else { return value; }});
JSON不允许包含函数,但可以将函数作为字符串存储,之后再将字符串转为函数
var text = '{ "name":"Runoob", "alexa":"function () {return 10000;}", "site":"www.runoob.com"}'; var obj = JSON.parse(text); obj.alexa = eval("(" + obj.alexa + ")");//包在括号里,避免出现语法错误
eval() 函数计算或执行参数。
如果参数是表达式,则 eval() 计算表达式。如果参数是一个或多个 JavaScript 语句,则 eval() 执行这些语句
JSON.stringify()
使用该方法将javaScript对象转为字符串
JSON不能存储Date对象
JSON.stringify()会将所有日期转换为字符串
JSON 不允许包含函数,JSON.stringify() 会删除 JavaScript 对象的函数,包括 key 和 value
我们可以在执行 JSON.stringify() 函数前将函数转换为字符串来避免以上问题的发生:
(尽管如此,还是不建议再JSON中使用函数)
var obj = { "name":"Runoob", "alexa":function () {return 10000;}, "site":"www.runoob.com"}; obj.alexa = obj.alexa.toString(); var myJSON = JSON.stringify(obj);
标签:XML,obj,var,字符串,JSON,myObj 来源: https://www.cnblogs.com/joliezz/p/16092742.html