JS对象文字和JSON字符串有什么区别?

时间:2012-06-08 15:04:14

标签: javascript json

我对Object Literals,JSON,JavaScript Objects的确切含义感到困惑,对我来说它们看起来很相似:

{foo: 'bar', bar : 'baz'}

AFAIK,上面是对象文字,json以及javascript对象,不是吗?

object literal和json是否意味着同样的事情?

你们如何区分哪个是什么?

6 个答案:

答案 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 J​​SON应该包含双引号括起来的键,如下所示:

{"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'};
  • JSON - 序列化对象;与在JS中定义对象类似的语法
  • Object literal - 用于在JS中定义对象的简写语法
  • 对象 - 定义的结果,例如,对象文字

在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:

引用mozillamozilla

  

JSON(JavaScript Object Notation)是一种数据交换格式。它   非常类似于JavaScript语法的一个子集,尽管它不是   strict subset.JSON是一种用于序列化对象,数组的语法,   数字,字符串,布尔值和null。它基于JavaScript   语法但与它不同:有些JavaScript不是JSON,有些是   JSON不是JavaScript。

用松散的话说,

object是一个javascript变量,可以包含属性和类型。

object literal是一种将属性和关联值分配给object的方法。

JSON是一个更严格的object literal,用于数据交换,包装为字符串。

(通常,严格是允许所有语言使用它,我们不能使用function作为值,key应该始终使用双引号(在对象文字中它不是必须的))