我对Object Literals、JSON和JavaScript Objects的确切含义感到困惑,它们看起来很相似:
{foo: 'bar', bar : 'baz'}
据我所知,上面是对象字面量,json和javascript对象,对吗?
对象字面量和json意思相同吗?
你们如何区分它们?
我对Object Literals、JSON和JavaScript Objects的确切含义感到困惑,它们看起来很相似:
{foo: 'bar', bar : 'baz'}
据我所知,上面是对象字面量,json和javascript对象,对吗?
对象字面量和json意思相同吗?
你们如何区分它们?
jsonString
包含一个JSON字符串:var jsonString = '{"foo": "bar", "bar" : "baz"}'
变量javascriptObject
包含一个 JavaScript 对象,使用对象字面量进行初始化:var javascriptObject = {foo: 'bar', bar : 'baz'}
你可以使用JSON.parse
将JSON字符串转换为JavaScript对象,然后再使用JSON.stringify
将其转换回去。{"foo":"bar"}
JavaScript对象是JavaScript语言的一部分,拥有原型等相关内容。
对象字面量是在代码中使用括号创建JavaScript对象,而不是使用new
关键字或Object.create()
方法。
//object literal
var foo = {};
//equivalent
var foo = new Object();
{ }
将被解释为块分隔符(而不是对象字面量指示符)。因此它不是三者之一,也不是两者之一。 - Felix KlingJSON源自于JavaScript中的对象字面量表示法,本身就是一个字符串。这解释了为什么它看起来很相似。今天,JSON被用作一种通用的序列化各种数据的方式,以便在提交到某个网络或存储之前进行传输。
// this is a JSON variable
var json = '{"foo": "bar", "bar" : "baz"}';
// obj is a JavaScript obj, defined by the object literal on the right hand side
var obj = {foo: 'bar', bar : 'baz'};
在 JS 中,您可以通过使用以下方法将 JSON 字符串转换为对象:
var obj = JSON.parse( json );
通过
,您可以获取对象的JSON表示(不包括附加函数)。var json = JSON.stringify( obj );
{"foo": "bar", "bar": "baz"}
,那就是有效的JSON格式...周围的引号是无效的。 - Felix Kling对象字面量:
参考mozilla,
对象字面量是一个对象的零个或多个属性名和相关值的列表,用花括号({})括起来。
Javascript 对象:
参考mozilla,
在 JavaScript 中,对象是一个独立的实体,具有属性和类型。
JSON:
JSON(JavaScript Object Notation)是一种数据交换格式。它与JavaScript语法的子集非常相似,尽管它不是一个严格的子集。JSON是一种用于序列化对象、数组、数字、字符串、布尔值和null的语法。它基于JavaScript语法,但与之不同:一些JavaScript不是JSON,一些JSON不是JavaScript。
JSON.stringify()
创建。将JSON视为解析为数据结构的标记。该标记可以发送到某些非JavaScript环境,并解析为对该环境有意义的任何数据结构。 - user1106925foo=42;baz=21
。你认为这是什么?有人可能会认为这是两个JavaScript语句,将值分配给变量。但在我的(虚构的)情况下,这是CSV文件中的一行,使用;
作为分隔符,与JavaScript(或任何其他语言)完全无关。这只是一种存储和表示数据的方式。这就是JSON的作用。 - Felix Kling{foo: 'bar', bar : 'baz'}
可能是一个对象字面量或(无效的)JSON,这取决于它所在的位置。然而,它肯定不是JavaScript对象值 - 对象存在于内存中,而不是源代码中。 - Šime Vidas