在 JavaScript 中使用 JSON

发布于 2021-01-23 15:41:16 字数 3319 浏览 1350 评论 0

JavaScript Object Notation (JSON), 一种使用 JavaScript 对象写的数据传输格式。

JavaScript 对象表示法(JSON)是用于将结构化数据表示为 JavaScript 对象的标准格式,通常用于在网站上表示和传输数据(例如从服务器向客户端发送一些数据,因此可以将其显示在网页上)

目标:

1、理解 JSON 的数据储存工作原理

2、创建您的 JSON 对象

一、不,说真的,什么是 JSON?

1、JSON 是一种按照JavaScript对象语法的数据格式,这是 Douglas Crockford 推广的。虽然它是基于 JavaScript 语法,但它独立于JavaScript,这也是为什么许多程序环境能够读取(解读)和生成 JSON。

2、JSON可以作为一个对象或者字符串存在,前者用于解读 JSON 中的数据,后者用于通过网络传输 JSON 数据。 这不是一个大事件——JavaScript 提供一个全局的 可访问的 JSON 对象来对这两种数据进行转换。

3、一个 JSON 对象可以被储存在它自己的文件中,这基本上就是一个文本文件,扩展名为 .json, 还有 MIME type 用于 application/json.

JSON 结构

我们已经可以推测出 JSON 对象就是基于 JavaScript 对象,而且这几乎是正确的。您可以把 JavaScript 对象原原本本的写入 JSON 数据——字符串,数字,数组,布尔还有其它的字面值对象。这允许您构造出一个对象树,如下:

{
  squadName: 'Super hero squad',
  homeTown: 'Metro City',
  formed: 2016,
  secretBase: 'Super tower',
  active: true,
  members: [
    {
      name: 'Molecule Man',
      age: 29,
      secretIdentity: 'Dan Jukes',
      powers: ['Radiation resistance', 'Turning tiny', 'Radiation blast'],
    },
    {
      name: 'Madame Uppercut',
      age: 39,
      secretIdentity: 'Jane Wilson',
      powers: ['Million tonne punch', 'Damage resistance', 'Superhuman reflexes'],
    },
    {
      name: 'Eternal Flame',
      age: 1000000,
      secretIdentity: 'Unknown',
      powers: ['Immortality', 'Heat Immunity', 'Inferno', 'Teleportation', 'Interdimensional travel'],
    },
  ],
};

如果我们要加载对象进入 JavaScript 程序,以保存为一个名为 superHeroes 对象为例,我们使用 . 或 [] 访问对象内的数据(关于. 和 []概念,见 对象基础 )。如:superHeroes.hometown

superHeroes["active"]

为了访问对象中的对象,您只需简单地链式访问(通过属性名和数组索引)。例如,访问 superHeroes 对象中的 members 数组对象的第二个元素的 powers 数组对象的第三个元素,您可以这样做:superHeroes["members"][1]["powers"][2]

  • 1、首先我们有变量名 superHeroes,储存对象 。
  • 2、在对象中我们想访问 members 属性,所以我们使用 ["members"]
  • 3、members 包含有对象数组,我们想要访问第二个元素,所以我们使用[1]。
  • 4、在对象内,我们想访问 powers 属性,所以我们使用 ["powers"]。
  • 5、powers 属性是一个包含英雄技能的数组。我们想要第三个,所以我们使用[2]。

JSON 数组

前面我们已经说过,”我们已经可以推测出 JSON 对象就是基于 JavaScript 对象,而且这几乎是正确的“——我们说几乎正确的原因是数组对象也是一种合法的 JSON 对象,例如:

[
  {
    name: 'Molecule Man',
    age: 29,
    secretIdentity: 'Dan Jukes',
    powers: ['Radiation resistance', 'Turning tiny', 'Radiation blast'],
  },
  {
    name: 'Madame Uppercut',
    age: 39,
    secretIdentity: 'Jane Wilson',
    powers: ['Million tonne punch', 'Damage resistance', 'Superhuman reflexes'],
  },
];

上面是完全合法的 JSON。您只需要通过数组索引就可以访问数组元素,如[0]["powers"][0]

其他注意事项

JSON 是一种纯数据格式,它只包含属性,没有方法。

JSON 要求有两头的 { } 来使其合法。最安全的写法是有两边的括号,而不是一边。

甚至一个错位的逗号或分号就可以导致 JSON 文件出错。您应该小心的检查您想使用的数据(虽然计算机生成的 JSON 很少出错,只要生成程序正常工作)。您可以通过像 JSONLint 的应用程序来检验 JSON。

JSON 可以将任何标准合法的 JSON 数据格式化保存,不只是数组和对象。比如,一个单一的字符串或者数字可以是合法的 JSON 对象。虽然不是特别有用处……

不像 JavaScript 标识符可以用作属性,在 JSON 中,只有字符串才能用作属性。

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

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

发布评论

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

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

emdigitizer10

文章 0 评论 0

残龙傲雪

文章 0 评论 0

奢望

文章 0 评论 0

微信用户

文章 0 评论 0

又爬满兰若

文章 0 评论 0

独孤求败

文章 0 评论 0

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