我对Object Literals,JSON,JavaScript Objects的确切含义感到困惑,对我来说它们看起来很相似:
{foo: 'bar', bar : 'baz'}
AFAIK,上面是对象文字,json以及javascript对象,不是吗?
object literal和json是否意味着同样的事情?
你们如何区分哪个是什么?
答案 0 :(得分:11)
变量jsonString
包含JSON字符串:
var jsonString = '{"foo": "bar", "bar" : "baz"}'
变量javascriptObject
包含一个javascript对象,使用对象文字初始化:
var javascriptObject = {foo: 'bar', bar : 'baz'}
您可以使用JSON.parse
将json字符串转换为javascript对象,然后使用JSON.stringify
将其转换回来。
答案 1 :(得分:7)
JSON 只是一种数据格式,就像XML一样。 True JSON应该包含双引号括起来的键,如下所示:
{"foo":"bar"}
JavaScript对象是JavaScript语言的一部分,并且具有相关的功能,例如原型。
对象文字正在使用括号创建一个javascript对象,而不是使用new
关键字或Object.create()
。
//object literal
var foo = {};
//equivalent
var foo = new Object();
答案 2 :(得分:4)
AFAIK,上面是对象文字,json以及javascript对象,不是吗?
这是一个对象字面意思。它创建了一个对象。
它不是JSON,因为它不符合语法(它是对象文字表示法的子集)。密码未被引用,并且在值周围使用了错误的引号('
而不是"
)。
你们如何区分哪个是什么?
上下文。
JSON通常不会出现(嵌入)在JavaScript程序中间。它是一种数据格式,通常显示为整个文件(或HTTP响应)。
当某些东西需要一个对象时,它可以从一个对象文字或一个变量(或一个函数调用的返回值等)中得到一个。
答案 3 :(得分:4)
JSON源自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 );
答案 4 :(得分:2)
根据specification,在JSON 所有字符串中,无论是值还是关键字,都应该用双引号括起来。
如果示例包含以下内容,则您的示例将是有效的JSON字符串:
{"foo": "bar", "bar": "baz"}
答案 5 :(得分:0)
对象文字:
引用mozilla,
对象文字是零个或多个属性名称对的列表 和对象的关联值,用大括号({})括起来。
Javascript对象:
引用mozilla,
在JavaScript中,对象是一个独立的实体,具有属性和 型
<强> JSON:强>
JSON(JavaScript Object Notation)是一种数据交换格式。它 非常类似于JavaScript语法的一个子集,尽管它不是 strict subset.JSON是一种用于序列化对象,数组的语法, 数字,字符串,布尔值和null。它基于JavaScript 语法但与它不同:有些JavaScript不是JSON,有些是 JSON不是JavaScript。
用松散的话说,
object
是一个javascript变量,可以包含属性和类型。
object literal
是一种将属性和关联值分配给object
的方法。
JSON是一个更严格的object literal
,用于数据交换,包装为字符串。
(通常,严格是允许所有语言使用它,我们不能使用function
作为值,key
应该始终使用双引号(在对象文字中它不是必须的))