5

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

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

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

对象字面量和 json 意思是一样的吗?

各位大佬怎么区分哪个是什么?

4

6 回答 6

11

该变量jsonString包含一个 JSON 字符串:

var jsonString = '{"foo": "bar", "bar" : "baz"}'

该变量javascriptObject包含一个使用对象字面量初始化的 javascript 对象:

var javascriptObject =  {foo: 'bar', bar : 'baz'}

您可以使用 将 json 字符串转换为 javascript 对象JSON.parse,然后使用JSON.stringify.

于 2012-06-08T15:07:36.267 回答
7

JSON只是一种数据格式,类似于 XML。真正的 JSON 应该有用双引号括起来的键,如下所示:

{"foo":"bar"}

JavaScript 对象是 JavaScript 语言的一部分,并且具有相关的东西,例如原型。

对象字面量是用括号创建一个 javascript 对象,而不是使用new关键字 or Object.create()

//object literal
var foo = {};

//equivalent
var foo = new Object();
于 2012-06-08T15:11:15.320 回答
4

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

它是一个对象字面量。它创建一个对象。

它不是 JSON,因为它不符合语法(它是对象文字符号的子集)。没有引用键,并且在值周围使用了错误类型的引号('而不是)。"

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

语境。

JSON 通常不会出现(嵌入)在 JavaScript 程序的中间。它是一种数据格式,通常显示为整个文件(或 HTTP 响应)。

当某物需要一个对象时,它可以从对象文字或变量(或函数调用的返回值等)中获取一个。

于 2012-06-08T15:07:32.913 回答
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 中定义对象的语法
  • 对象字面量 - 在 JS 中定义对象的简写语法
  • 对象- 定义的结果,例如,对象字面量

在 JS 中,您可以使用以下方法将 JSON 字符串转换为对象

var obj = JSON.parse( json );

并通过以下方式获取对象(不包括附加函数)的 JSON 表示

var json = JSON.stringify( obj );
于 2012-06-08T15:08:18.893 回答
2

根据规范,在 JSON 中,所有字符串,无论是值还是关键字,都应该用双引号括起来。

如果您的示例包含以下内容,它将是一个有效的 JSON 字符串:

{"foo": "bar", "bar": "baz"}
于 2012-06-08T15:05:29.933 回答
0

对象字面量:

参考Mozilla

对象字面量是对象的零或多对属性名称和关联值的列表,用花括号 ({}) 括起来。

Javascript 对象:

参考Mozilla

在 JavaScript 中,对象是一个独立的实体,具有属性和类型

JSON:

引用mozillamozilla

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

用松散的话说,

Anobject是一个可以具有属性和类型的 javascript 变量。

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

JSON 更严格地object literal用于数据交换,它被包装为字符串。

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

于 2012-06-08T15:52:29.700 回答