我想用JavaScript解析JSON字符串。响应类似于
var response = '{"result":true,"count":1}';
如何从中获取值结果和计数?
我想用JavaScript解析JSON字符串。响应类似于
var response = '{"result":true,"count":1}';
如何从中获取值结果和计数?
当前回答
如果从MVC@Viewbag向JSON.parse传递一个字符串变量(格式良好的JSON字符串),该变量包含双引号“”作为引号,则需要在JSON.pase(jsonsring)之前处理它
var jsonstring = '@ViewBag.jsonstring';
jsonstring = jsonstring.replace(/"/g, '"');
其他回答
如果使用DojoToolkit:
require(["dojo/json"], function(JSON){
JSON.parse('{"hello":"world"}', true);
});
JSON.parse()将传递给函数的任何JSON字符串转换为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));
您将得到对象{result:true,count:1}的输出。
为了使用该对象,可以将其分配给变量,例如obj:
var obj = JSON.parse(response);
现在,通过使用obj和dot(.)操作符,您可以访问JSON对象的财产。
尝试运行命令
console.log(obj.result);
如果你愿意
var response = '{"result":true,"count":1}';
var JsonObject= JSON.parse(response);
您可以通过JsonObject使用(.)dot访问JSON元素:
JsonObject.result;
JsonObject.count;
警告!这个答案源于一个古老的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方法。
这确实是未来的理想解决方案。
以下示例将明确说明:
let contactJSON = '{"name":"John Doe","age":"11"}';
let contact = JSON.parse(contactJSON);
console.log(contact.name + ", " + contact.age);
// Output: John Doe, 11