gpt4 book ai didi

javascript - JSON 和 JavaScript 对象有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 12:42:11 26 4
gpt4 key购买 nike

我是 JSON 和 JavaScript 对象的新手。

  • 谁能解释一下 JSON 和 JavaScript 对象之间的区别?
  • 它们的用途是什么?
  • 一个比另一个好?还是视情况而定?
  • 什么时候用哪一个,在什么情况下?
  • 为什么首先要创建 JSON?它的主要目的是什么?
  • 谁能举例说明何时应该使用 JSON 而不是 JavaScript 对象,反之亦然?

最佳答案

首先你应该知道 JSON 是什么:

  • 它是 与语言无关的数据交换格式。

JSON 的语法受到 JavaScript Object Literal 表示法的启发,但它们之间存在差异。

例如,在 JSON 中,所有的 keys 都必须被引用,而在对象字面量中,这不是必需的:

// JSON:
{ "foo": "bar" }

// Object literal:
var o = { foo: "bar" };

引号在 JSON 中是强制性的,因为在 JavaScript(更准确地说是在 ECMAScript 3rd. Edition 中)中,不允许使用 保留字 作为属性名称,例如:

var o = { if: "foo" }; // SyntaxError in ES3

虽然,使用字符串文字作为属性名(引用属性名)没有问题:

var o = { "if": "foo" }; 

所以对于“兼容性”(也许是简单的评估?)引号是强制性的。

JSON 中的数据类型也限制为以下值:

  • 字符串
  • 编号
  • 对象
  • 数组
  • 文字为:
    • null

Strings 的语法发生了变化。它们必须双引号分隔,而在JavaScript中,你可以互换使用单引号或双引号。

// Invalid JSON:
{ "foo": 'bar' }

Numbers 的公认 JSON 语法也发生了变化,在 JavaScript 中,您可以使用十六进制文字,例如 0xFF,或(臭名昭著的)八进制文字,例如010。在 JSON 中,您只能使用十进制文字。

// Invalid JSON:
{ "foo": 0xFF }

有一些错误的实现(Firefox 3.5+、IE8+、json2.js)错误地允许使用八进制文字,例如JSON.parse('01') 应该产生 SyntaxError

关于javascript - JSON 和 JavaScript 对象有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3975859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com