我没有在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的做法有何不同?
这可能是一个愚蠢的问题。但如果有人能够解释这一点会很有帮助。
感谢。
答案 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 ,那么您将获得未定义的值。