我想用JavaScript解析JSON字符串。响应类似于
var response = '{"result":true,"count":1}';
如何从中获取值结果和计数?
我想用JavaScript解析JSON字符串。响应类似于
var response = '{"result":true,"count":1}';
如何从中获取值结果和计数?
当前回答
正如许多其他人提到的,大多数浏览器都支持JSON.parse和JSON.stringify。
现在,我还想补充一点,如果您正在使用AngularJS(我强烈推荐),那么它还提供了您需要的功能:
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(以及更旧版本),尽管根据经验,大多数功能似乎都很好。
其他回答
使用parse()方法的最简单方法:
var response = '{"a":true,"b":1}';
var JsonObject= JSON.parse(response);
这是如何获取值的示例:
var myResponseResult = JsonObject.a;
var myResponseCount = JsonObject.b;
如果您是从外部站点获取此信息,那么使用jQuery的getJSON可能会有所帮助。如果它是一个列表,你可以用$.each遍历它
$.getJSON(url, function (json) {
alert(json.result);
$.each(json.list, function (i, fb) {
alert(fb.result);
});
});
您可以像在其他答案中一样使用eval函数。(不要忘记额外的大括号。)当你深入研究时,你会知道为什么),或者简单地使用jQuery函数parseJSON:
var response = '{"result":true , "count":1}';
var parsedJSON = $.parseJSON(response);
OR
您可以使用以下代码。
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
警告!这个答案源于一个古老的JavaScript编程时代,在这个时代,没有内置的方法来解析JSON。这里给出的建议不再适用,可能很危险。从现代角度来看,通过jQuery或调用eval()来解析JSON是无稽之谈。除非您需要支持IE 7或Firefox 3.0,否则解析JSON的正确方法是JSON.parse()。
首先,您必须确保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方法。
这确实是未来的理想解决方案。
如果您想将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对象。