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

谁能告诉我的JavaScript对象和JSON对象之间的区别与一个例子?

Javascript 对象是Javascript中的数据types – 只有在Javascript中才有意义。 通常你会看到一个像这样的Javascript 对象

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

一个JSON string是一种数据交换格式 – 它只不过是一串特殊格式的字符(为了让不同的程序相互通信)。 正因为如此,它可以存在于JavaScript内部,或者以其他语言存在,或者简单地存储在数据库或文本文件中。

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

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

或者在C#中这样:

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

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

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

虽然通常你会看到:

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

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

  • 对象(文字)
  • arrays
  • 数字
  • 布尔
  • string

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对象表示法”。 基本上,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" } } } } } 

注意var Glossary =在JavaScript中?

那么首先,JavaScript就像面向对象编程中的其他对象一样。

正如RobG所说,JSON实际上是Javascript符号中的对象字面量。 但不完全。 根据一本Javascript书,它说这是一个使用Object Notation定义的对象:

 var newObject = { prop1 : true, showMessage : function (msg) {alert(msg)} }; 

根据JavaScript中的JSON,

JSON是JavaScript对象文字符号的一个子集。

你也可以考虑看看这个链接

 var object = { name: "John", profession: "blogger" }; alert(object.name);//John alert(typeof(object));//Object alert(object);//[object Object] var json = JSON.stringify(object); alert(json.name);//undefined alert(typeof(json));//string alert(json);//{"name":"John","profession":"blogger"}