JSON和JavaScript对象之间有什么区别?

发布于 2021-02-02 17:26:28

我是JSON和JavaScript对象的新手。

  • 有人可以解释JSON和JavaScript对象之间的区别吗?
  • 它们有什么用?
  • 这个比那个好吗?还是取决于情况?
  • 什么时候使用哪个,在什么情况下?
  • 为什么首先创建JSON?它的主要目的是什么?
  • 有人可以举例说明何时应该使用JSON而不是JavaScript对象,反之亦然吗?
关注者
0
被浏览
107
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    首先,您应该知道什么是JSON:

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

    JSON的语法受JavaScript对象文字表示法的启发,但是它们之间存在差异。

    例如,在JSON中,所有 键都 必须加引号,而在对象文字中,则不需要:

    // 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中的数据类型也限制为以下值:

    • string
    • number
    • object
    • array
    • 文字为:
      • true
      • false
      • null

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

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

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

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

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



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看