JSON 常见知识
什么是 JSON
JSON 是一种轻量级的数据格式,他基于 javascript 语法的子集,即数组和对象表示。
因此 JSON 定义可以包含在 javascript 文件中,对其的访问无需通过基于 XML 的语言来额外解析。
数组字面量
数组字面量,是用一对方括号括起一组用逗号隔开的 javascript 值
const aNames = ["hello", 12, true , null]
对象字面量
对象字面量,是通过两个花括号来定义的。在花括号内可以放置任意数量的“名称-值”对,定义格式字符串值。
除了最后一行外,每个“名称-值”对后必须有一个逗号
const oCar = {
"color": "red",
"doors" : 4,
"paidFor" : true
}
混合字面量
我们可以混用对象和数组字面量,来创建一个对象数组,或一个包含数组的对象。
const oCars = [
{
"color": "red",
"doors" : 4,
"paidFor" : true,
},
{
"color": "green",
"doors" : 4,
"paidFor" : false,
}
]
JSON 语法
在 Ajax 应用中,就是服务器直接生成 javascript 语句,客户端获取后直接用 eval 方法来获得这个对象,这样就可以省去解析 XML 的性能损失。
json 格式的 key 必须为双引号
'{"a":"b"}'
为 json 字符窜"{'a':'b'}"
不为 json 字符窜
var str = '[{"color":"red","doors":4,"paidFor":true},{"color":"green","doors":4,"paidFor":false}]'
var obj = JSON.parse(str)
// var obj = eval("(" + str + ")")(有安全隐患)
var JSONStr = JSON.stringify(obj)
console.log(JSONStr === str) // true
为什么 eval 要添加括号呢?
- 由于 json 是以{}的方式来开始以及结束的,在 JS 中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
- 加上圆括号的目的是迫使 eval 函数在处理 JavaScript 代码的时候强制将括号内的表达式 (expression) 转化为对象,而不是作为语句 (statement) 来执行。
举一个例子,例如对象字面量 {}
,如若不加外层的括号,那么 eval 会将大括号识别为 JavaScript 代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。
console.log(eval("{}") // undefined
console.log(eval("({})") // object[Object]
如果清楚最外层时数组的话就可以不用加括号
console.log(eval("[]")) // []
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: 微信小程序 显示区域与旋转
下一篇: TypeScript 常见问题
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论