用JavaScript解析JSON?

用JavaScript解析JSON?,javascript,json,parsing,Javascript,Json,Parsing,我想用JavaScript解析JSON字符串。反应是这样的 var response = '{"result":true,"count":1}'; 如何从中获取值result和count?在JavaScript中解析JSON的标准方法是 该API于(2011年)引入,并已在99%以上的浏览器(按市场份额)和Node.js中实现。它的用法很简单: var response = '{"result":true,"count":1}'; var obj = $.parseJSON(response)

我想用JavaScript解析JSON字符串。反应是这样的

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

如何从中获取值
result
count

在JavaScript中解析JSON的标准方法是

该API于(2011年)引入,并已在99%以上的浏览器(按市场份额)和Node.js中实现。它的用法很简单:

var response = '{"result":true,"count":1}';
var obj = $.parseJSON(response);
alert(obj.result); //true
alert(obj.count); //1
constjson='{“水果”:“菠萝”,“手指”:10};
const obj=JSON.parse(JSON);

控制台日志(对象水果,对象手指)如果不使用库,您可以使用
eval
——这是您唯一应该使用的时间。不过,使用图书馆更安全

例如

警告

这个答案源自一个古老的JavaScript编程时代,在这个时代,没有内置的方式来解析JSON。这里给出的建议不再适用,可能很危险。从现代的角度来看,通过jQuery或调用eval()解析JSON是毫无意义的。除非您需要支持IE7或Firefox3.0,否则解析JSON的正确方法是

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

之后,如果可以的话,我建议使用jQuery或Prototype之类的JavaScript库,因为这些库处理得很好

另一方面,如果您不想使用库,并且可以保证JSON对象的有效性,我只需将字符串包装在匿名函数中,然后使用eval函数

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

下面是使用eval函数的示例:

var strJSON = '{"result":true,"count":1}';
var objJSON = eval("(function(){return " + strJSON + ";})()");
alert(objJSON.result);
alert(objJSON.count);
如果您可以控制正在使用的浏览器,或者您不担心使用旧浏览器的人,那么您可以始终使用JSON.parse方法


这确实是未来的理想解决方案。

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

$.getJSON(url, function (json) {
    alert(json.result);
    $.each(json.list, function (i, fb) {
        alert(fb.result);
    });
});
我认为
JSON.parse(myObject)
可以工作。但是根据浏览器的不同,它可能值得使用
eval(“(“+myObject+”)”)
。我建议注意的唯一问题是JSON中的多级列表

如果要在较旧的浏览器上使用,可以有条件地使用以下内容加载:

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

window.JSON | |
文件。写(“”);

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

您可以像在其他回答中一样使用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.result
jsonObject.count
访问字段

更新:

如果输出是未定义的
,则需要遵循。可能您的json字符串具有数组格式。您需要像这样访问json对象属性

var response = '[{"result":true , "count":1}]'; // <~ Array with [] tag
var jsonObject = JSON.parse(response);
console.log(jsonObject[0].result); //Output true
console.log(jsonObject[0].count); //Output 1

var response='[{“result”:true,“count”:1}]';// 下面的例子将说明这一点:

let contactJSON = '{"name":"John Doe","age":"11"}';
let contact = JSON.parse(contactJSON);
console.log(contact.name + ", " + contact.age);

// Output: John Doe, 11

如果使用jQuery,它很简单:

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

正如许多其他人提到的,大多数浏览器支持
JSON.parse
JSON.stringify

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

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的内容,以提供另一个选项。请注意,AngularJS并不正式支持InternetExplorer8(以及更早的版本),尽管根据经验,大多数东西似乎都运行得很好。

如果您使用:

一种简单的方法:

var data='{“结果”:true,“计数”:1}';
var json=eval(“[”+数据+“])[0];/;)

如果您将字符串变量(格式良好的JSON字符串)从MVC@Viewbag传递给JSON.parse,该变量包含双引号“,”作为引号,则需要在JSON.parse之前对其进行处理(
jsonstring

parse()将传递到函数中的任何JSON字符串转换为JSON对象

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

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));
您将获得对象{result:true,count:1}的输出

为了使用该对象,可以将其分配给变量,比如说
obj

var obj = JSON.parse(response);
现在,通过使用
obj
和点(.)操作符,您可以访问JSON对象的属性

尝试运行该命令

console.log(obj.result);
如果你愿意

var response = '{"result":true,"count":1}';
var JsonObject= JSON.parse(response);
您可以通过JsonObject使用(.)点访问JSON元素:

JsonObject.result;
JsonObject.count;

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

var response = '{"a":true,"b":1}';
var JsonObject= JSON.parse(response);
这是一个如何获取值的示例:

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

@Marwan:IE8+支持
JSON.parse()
。对于IE6、7和其他较旧的浏览器,您可以使用我在文章中链接到的json2.js。或者,您可以使用
eval
。除非他还需要
JSON.stringify())
审阅者注意:在允许同行编辑之前,请彻底检查他们,因为您的操作可能会对用户复制和粘贴答案中的代码造成不必要的副作用。不必先检查本机支持,然后再返回到jQuery。jQuery 1.10先尝试
JSON.parse
,然后是自己的实现。jQuery 2.x直接调用
JSON.parse
,而无需检查或回退。浏览器支持详细信息:eval无法处理返回为HTMLIF的JSON字符串,如果它是html编码的,则不再是JSON。eval需要有效的javascript,而JSON可能不是,因此eval无法解析某些有效的JSON文本(例如,U+2028在JSON中有效,在javascript中无效)。太棒了!我无法导入JSON库,因为它与其他libseval()冲突,可以完成作业,但它可能会
var response = '{"a":true,"b":1}';
var JsonObject= JSON.parse(response);
var myResponseResult = JsonObject.a;
var myResponseCount = JsonObject.b;