JSON.parse()如何工作?

时间:2015-09-22 07:02:28

标签: javascript json javascript-objects

我没有在javascript上工作​​太多。而且,我需要解析一个JSON字符串。所以,我想知道JSON.parse究竟是做什么的。例如 : 如果我将json字符串分配给这样的变量,

var ab = {"name":"abcd", "details":{"address":"pqrst", "Phone":1234567890}};

现在,当我打印' ab'时,我得到了一个对象。

同样当我这样做时:

var pq = '{"name":"abcd", "details":{"address":"pqrst", "Phone":1234567890}}';
var rs = JSON.parse(pq);

''与' ab'是同一个对象。那么两种方法的区别是什么?JSON.parse的做法有何不同?

这可能是一个愚蠢的问题。但如果有人能够解释这一点会很有帮助。

感谢。

4 个答案:

答案 0 :(得分:4)

以下是jsfiddle的解释。

{{1}}

JSON或JavaScript Object Notation是用于构造数据的最小可读格式。它主要用于在服务器和Web应用程序之间传输数据,作为XML的替代方法。

答案 1 :(得分:4)

Javascript对象是Javascript中的数据类型 - 它在您的第一个示例中定义了属性和值对。

var ab = {"name":"abcd", "details":{"address":"pqrst", "Phone":1234567890}};

现在什么是Json:JSON字符串是一种数据交换格式 - 它只不过是以特定方式格式化的一堆字符(为了让不同的程序相互通信)

var pq = '{"name":"abcd", "details":{"address":"pqrst", "Phone":1234567890}}';

所以这是一个带有json格式的字符串。

并且最后JSON.parse()返回与给定JSON文本对应的Object。

答案 2 :(得分:1)

你的'ab'变量不是一个字符串,它是一个合适的javascript对象,因为你在它周围使用了{}。如果你将整个东西包裹在“”中,那么它就是一个字符串,并打印成一行。

答案 3 :(得分:0)

数据类型!!这就是答案。 在这种情况下, ab 对象,而 pq 是一个字符串(含糊地说)。 Print 只是一个将“任何”显示为字符串的操作。但是,你必须以不同的方式看待这两者。 字符串本身是一个对象,它具有与之关联的属性和方法。在这种情况下, pq 就像一个具有以下值的对象: {“name”:“abcd”,“details”:{“address”:“pqrst”,“Phone”: 1234567890}} 例如,它有一个名为 length 的属性,其值为66。 但 ab 是一个对象,您可以将 name details 视为其属性。

JSON.parse()的做法不同,它将该字符串解析(转换)为对象。并非所有字符串都可以解析为对象。尝试传递 {“name”:“abc”,JSON.parse会抛出异常。

在解析之前, pq 没有任何属性 name 。如果您执行了类似 pq.name 的操作,它将返回 undefined 。但是当你使用JSON.parse()解析它时, rs.name 将返回字符串“abcd”。但 rs 将不再具有属性 length ,因为它不是字符串。如果您尝试了 rs.length ,那么您将获得未定义的值。