在JavaScript中parsingJSON?

我想在JavaScript中parsing一个JSONstring。 反应是类似的

var response = '{"result":true,"count":1}'; 

我怎样才能得到值的result并从此count

大多数浏览器都支持ECMA-262第5版(JavaScript基于的规范JSON.parse()中定义的JSON.parse() )。 它的使用很简单:

 var json = '{"result":true,"count":1}', obj = JSON.parse(json); alert(obj.count); 

对于那些你不能使用json2.js来实现的浏览器。

如注释中所述,如果您已经在使用jQuery,则会有一个$.parseJSON函数映射到JSON.parse如果可用)或在较旧的浏览器中使用一种evalforms。 但是,这会执行额外的,不必要的检查,也是由JSON.parse执行的,所以为了获得最佳的全面性能,我推荐使用它:

 var json = '{"result":true,"count":1}', obj = JSON && JSON.parse(json) || $.parseJSON(json); 

这将确保您立即使用本地JSON.parse ,而不是让jQuery在将string传递给本机parsing函数之前对其进行完整性检查。

首先,你必须确保JSON代码是有效的。

之后,如果可以的话,我会推荐使用JavaScript库(如jQuery或Prototype),因为这些东西在这些库中处理得很好。

另一方面,如果你不想使用一个库,并且可以保证JSON对象的有效性,那么我会简单地将string包装在一个匿名函数中,并使用eval函数。

如果您从另一个不是完全可信的源获取JSON对象,则不推荐这样做,因为如果您愿意,eval函数允许使用叛离代码。

这是一个使用eval函数的例子:

 var strJSON = '{"result":true,"count":1}'; var objJSON = eval("(function(){return " + strJSON + ";})()"); alert(objJSON.result); alert(objJSON.count); 

如果您控制正在使用的浏览器,或者您并不担心使用旧浏览器的人,则始终可以使用JSON.parse方法。

这真的是未来的理想解决scheme。

如果您从外部网站获取此信息,使用jquery的getJSON可能会有所帮助。 如果它是一个列表,你可以用$ .each遍历它

 $.getJSON(url, function (json) { alert(json.result); $.each(json.list, function (i, fb) { alert(fb.result); }); }); 

如果您想在旧版浏览器中使用JSON 3 ,则可以使用以下条件加载:

 <script> window.JSON || document.write('<script src="//cdnjs.cloudflare.com/ajax/libs/json3/3.2.4/json3.min.js"><\/scr'+'ipt>'); </script> 

现在无论客户端运行什么浏览器,都可以使用标准的window.JSON对象。

下面的例子将说明:

 var jsontext = '{"name":"x","age":"11"}'; var getContact = JSON.parse(jsontext); document.write(getContact.name + ", " + getContact.age); // Output: x, 11 

要么

你也可以使用eval函数。 以下示例使用了eval函数:

 var jsontext = '{"name":"x","age":"11"}'; var getContact = eval('(' + jsontext + ')'); document.write(getContact.name + ", " + getContact.age); // Output: x, 11 

由于JSON.parse函数比eval函数更安全,执行速度更快,所以我build议您使用JSON.parse函数。

您可以使用eval函数作为一些其他的答案。 (不要忘记额外的大括号。)当你深入挖掘的时候,你会知道为什么),或者简单地使用jQuery函数parseJSON

 var response = '{"result":true , "count":1}'; var parsedJSON = $.parseJSON(response); 

要么

你可以使用下面的代码。

 var response = '{"result":true , "count":1}'; var jsonObject = JSON.parse(response); 

你可以使用jsonObject.resultjsonObject.count来访问这些字段。

如果你将一个stringvariables(一个格式正确的JSONstring)传递给MVC @Viewbag中的JSON.parse,那么引号就是''',你需要在JSON.parse( jsonstring

  var jsonstring = '@ViewBag.jsonstring'; jsonstring = jsonstring.replace(/&quot;/g, '"'); 

使用parse()方法的最简单的方法是:

 var response = '{"a":true,"b":1}'; var JsonObject= JSON.parse(response); 

这是如何获取值的一个例子:

 var myResponseResult = JsonObject.a; var myResponseCount = JsonObject.b; 

如果不使用库,您可以使用eval – 唯一的一次使用。 尽pipe使用图书馆更安全。

例如…

 var response = '{"result":true , "count":1}'; var parsedJSON = eval('('+response+')'); var result=parsedJSON.result; var count=parsedJSON.count; alert('result:'+result+' count:'+count); 

JSON.parse()将传递给函数的任何JSONstring转换为JSON对象。

为了更好的理解,请按F12打开浏览器的Inspect Element,然后转到控制台编写以下命令:

 var response = '{"result":true,"count":1}'; // Sample JSON object (string form) JSON.parse(response); // Converts passed string to a JSON object. 

现在运行命令:

 console.log(JSON.parse(response)); 

你会得到输出为Object {result:true,count:1}。

为了使用这个对象,你可以把它分配给variables,让我们说obj

 var obj = JSON.parse(response); 

现在通过使用obj和点(。)运算符,您可以访问JSON对象的属性。

尝试运行该命令

 console.log(obj.result); 

如果你喜欢

 var response = '{"result":true,"count":1}'; var JsonObject= JSON.parse(response); 

您可以通过JsonObject使用(。) dot访问JSON元素:

 JsonObject.result; JsonObject.count; 

我认为JSON.parse(myObject)会工作。 但取决于浏览器,可能值得使用eval('('+myObject+')') 。 我可以推荐注意的唯一问题是JSON中的多级列表。

一个简单的方法来做到这一点:

 var data = '{"result":true,"count":1}'; var json = eval("[" +data+ "]")[0]; // ;) 

如果你使用jQuery,很简单:

 var response = '{"result":true,"count":1}'; var obj = $.parseJSON(response); alert(obj.result); //true alert(obj.count); //1 

如果您使用Dojo Toolkit :

 require(["dojo/json"], function(JSON){ JSON.parse('{"hello":"world"}', true); }); 

正如众多人所提到的,大多数浏览器都支持JSON.parseJSON.stringify

现在,我还想补充一点,如果您正在使用AngularJS (我强烈推荐),那么它还提供了您需要的function:

 var myJson = '{"result": true, "count": 1}'; var obj = angular.fromJson(myJson);//equivalent to JSON.parse(myJson) var backToJson = angular.toJson(obj);//equivalent to JSON.stringify(obj) 

我只是想添加有关AngularJS的东西来提供另一种select。 请注意,AngularJS并不正式支持Internet Explorer 8(以及旧版本),尽pipe通过大多数的经验似乎工作得很好。