JSON和JavaScript对象有什么区别?

我是JSON和JavaScript对象的新手。

  • 有人能解释一下JSON和JavaScript对象之间的区别吗?
  • 他们有什么用途?
  • 这个比那个好吗? 还是取决于情况?
  • 何时使用哪一种,在什么情况下?
  • 为什么JSON首先创建? 它的主要目的是什么?
  • 有人可以举例说明何时应该使用JSON而不是JavaScript对象,反之亦然?

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

  • 它是语言不可知的数据交换格式。
  • JSON的语法受JavaScript Object Literal表示法的启发,但它们之间存在差异。

    例如,在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也改变,在JavaScript中你可以使用十六进制文字,例如0xFF ,或(臭名昭着的)八进制文字,如010 。 在JSON中,只能使用十进制文字。

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

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


    JSON是一个对象的字符串表示。 它是一种可互操作的序列化格式。 它不仅仅绑定到JavaScript。 例如,有用于.NET的JSON序列化程序,允许您序列化/反序列化.NET对象。

    所以它只是一种格式,允许您将对象转换为字符串并返回,如果您想通过线路传输它们,这很方便。

    它非常接近javascript对象表示,如果你简单的eval()一个JSON字符串,你会得到相应的对象。


    JSON是一种数据交换格式,它恰好看起来像您可以执行并返回对象的YAML或JavaScript代码的子集。 JavaScript对象只是JavaScript中的一个对象。

    使用JSON作为数据交换格式,您可以用文本形式交换结构化数据。 到目前为止,它与JavaScript非常不兼容。 JavaScript对象允许您在执行JavaScript程序期间创建和使用结构化数据。

    链接地址: http://www.djcxy.com/p/20063.html

    上一篇: What are the differences between JSON and JavaScript object?

    下一篇: save option for npm install?