Javascript Object和JSON对象有什么区别?

任何人都可以通过一个例子告诉我JavaScript对象和JSON对象之间的区别吗?


Javascript对象是Javascript中的数据类型 - 只有在Javascript中才有意义。 通常你会看到一个像这样的Javascript对象字面值:

var obj = {
    a: 1,
    b: 2
};

JSON字符串是一种数据交换格式 - 它只不过是以特定方式格式化的一串字符(以便不同程序彼此通信)。 正因为如此,它可以存在于JavaScript内部,或者以其他语言存在,或者存储在数据库或文本文件中。

上面的JavaScript对象可以用JavaScript这样的JSON格式表示:

var json = '{ "a": 1, "b": 2 }';

或者在C#中这样做:

string json = "{ "a": 1, "b": 2 }";

正如你所看到的,JSON只是存储在一个字符串中。 为了使它有用,可以解析JSON字符串以产生任何语言的对象。 因为JSON格式模仿Javascript的对象字面值语法,所以Javascript使得解析过程变得简单:

var obj = eval('(' + json + ')');

虽然通常你会看到:

var obj = JSON.parse(json); // for security reasons

请注意,JSON是有限的,因为它不能存储函数 - 它可以包含的唯一值是:

  • 对象(文字)
  • 阵列
  • 数字
  • 布尔
  • 字符串

  • JSON是javscript对象的文本表示。 它实际上是JavaScript记法中的对象字面值(因此名称为 - JavaScript Object Notation => JSON)。

    如果要“比较”两个对象,请将文本转换为对象,然后比较键和值。

    来自/来自文本的对象的一些示例:

    // Create obj using an object literal
    var obj = {key: 'value'};
    
    // Convert to text using JSON.stringify
    var text = JSON.stringify(obj);
    
    // Show the value of text
    alert( text ); // {"key":"value"}
    
    // Create a new object from text
    var newObj = JSON.parse(text); // javascript object
    
    // Show the text version of newObj
    alert(JSON.stringify(newObj));  // {"key":"value"}
    
    // Use text as code
    var newObj2 = eval('(' + text + ')');
    
    // It is indeed a string literal
    alert(JSON.stringify(newObj2));  // {"key":"value"}
    

    如果你想比较两个对象,将它们从JSON转换为对象(如果它们是JSON的话),然后执行如下操作:

    function compareObjects(a, b) {
      var i, p, aProps = [], bProps = [];
    
      // Simple test first
      if (a === b) {
        return true;
      }
    
      // Get properties of a
      for (p in a) {
        if (a.hasOwnProperty(p)) {
          aProps.push(p);
        } 
      }
    
      // Get properties of b
      for (p in b ) {
        if (b.hasOwnProperty(p)) {
          bProps.push(p);
        } 
      }
    
      // If don't have same properties, return false
      if (aProps.sort().join('') != bProps.sort().join('')) {
        return false;
      }
    
      // If property values aren't the same, return false
      i = aProps.length;
      while (i--) {
        if (a[aProps[i]] !== b[bProps[i]]) {
          return false;
        }
      }
    
      // If passed all tests, must be equal
      return true;
    }
    

    JSON代表“JavaScript Object Notation”。 基本上,JSON是Javascript,但仅限于用数据填充对象。 通过执行JSON对象,可以将数据“加载”到内存中。
    JavaScript是更大的图片,用额外的代码来操纵对象或做各种其他的东西。

    一个JSON的例子是这样的:

    {
        "glossary": {
            "title": "example glossary",
            "GlossDiv": {
                "title": "S",
                "GlossList": {
                    "GlossEntry": {
                        "ID": "SGML",
                        "SortAs": "SGML",
                        "GlossTerm": "Standard Generalized Markup Language",
                        "Acronym": "SGML",
                        "Abbrev": "ISO 8879:1986",
                        "GlossDef": {
                            "para": "A meta-markup language, used to create markup languages such as DocBook.",
                            "GlossSeeAlso": ["GML", "XML"]
                        },
                        "GlossSee": "markup"
                    }
                }
            }
        }
    }
    

    一个JavaScript例子是这样的:

    var Glossary = {
        "glossary": {
            "title": "example glossary",
            "GlossDiv": {
                "title": "S",
                "GlossList": {
                    "GlossEntry": {
                        "ID": "SGML",
                        "SortAs": "SGML",
                        "GlossTerm": "Standard Generalized Markup Language",
                        "Acronym": "SGML",
                        "Abbrev": "ISO 8879:1986",
                        "GlossDef": {
                            "para": "A meta-markup language, used to create markup languages such as DocBook.",
                            "GlossSeeAlso": ["GML", "XML"]
                        },
                        "GlossSee": "markup"
                    }
                }
            }
        }
    }
    

    注意JavaScript中的var Glossary =

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

    上一篇: What's the difference between Javascript Object and JSON object

    下一篇: Does Javascript pass by reference?