JSON 常见知识

发布于 2025-02-05 01:39:52 字数 1880 浏览 25 评论 0

什么是 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 要添加括号呢?

  1. 由于 json 是以{}的方式来开始以及结束的,在 JS 中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
  2. 加上圆括号的目的是迫使 eval 函数在处理 JavaScript 代码的时候强制将括号内的表达式 (expression) 转化为对象,而不是作为语句 (statement) 来执行。

举一个例子,例如对象字面量 {} ​,如若不加外层的括号,那么 eval 会将大括号识别为 JavaScript 代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。

console.log(eval("{}") // undefined 
console.log(eval("({})") // object[Object]

如果清楚最外层时数组的话就可以不用加括号

console.log(eval("[]")) // []

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

洋洋洒洒

暂无简介

文章
评论
29 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文