javascript - nodejs - 前端解析json
在JavaScript中解析JSON? (11)
JSON.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));
你会得到输出为Object {result:true,count:1}。
为了使用该对象,可以将它分配给变量,比如说obj
:
var obj = JSON.parse(response);
现在通过使用obj
和点(。)运算符,您可以访问JSON对象的属性。
尝试运行该命令
console.log(obj.result);
这个问题在这里已经有了答案:
- 安全地将JSON字符串转换为对象 21答案
我想在JavaScript中解析JSON字符串。 答案是类似的
var response = '{"result":true,"count":1}';
我怎样才能得到值的result
并从此count
?
一个简单的方法来做到这一点:
var data = '{"result":true,"count":1}';
var json = eval("[" +data+ "]")[0]; // ;)
使用parse()
方法的最简单方法是:
var response = '{"a":true,"b":1}';
var JsonObject= JSON.parse(response);
这是如何获取值的一个例子:
var myResponseResult = JsonObject.a;
var myResponseCount = JsonObject.b;
大多数浏览器都支持JSON.parse()
,这是在ECMA-262第5版(JavaScript基于的规范)中定义的。 它的用法很简单:
var json = '{"result":true,"count":1}',
obj = JSON.parse(json);
alert(obj.count);
对于那些不能使用json2.js实现的浏览器。
正如在评论中指出的那样,如果您已经在使用jQuery,那么会有一个$.parseJSON
函数映射到JSON.parse
如果可用)或者在较旧的浏览器中使用一种eval
形式。 但是,这会执行额外的不必要的检查,这些检查也是由JSON.parse
执行的,所以为了获得最佳的全面性能,我建议使用它,如下所示:
var json = '{"result":true,"count":1}',
obj = JSON && JSON.parse(json) || $.parseJSON(json);
这将确保您立即使用本机JSON.parse
,而不是让jQuery在将字符串传递给本机解析函数之前对其进行完整性检查。
如果你使用jQuery,很简单:
var response = '{"result":true,"count":1}';
var obj = $.parseJSON(response);
alert(obj.result); //true
alert(obj.count); //1
如果你喜欢
var response = '{"result":true,"count":1}';
var JsonObject= JSON.parse(response);
您可以通过JsonObject使用(。) dot访问JSON元素:
JsonObject.result;
JsonObject.count;
如果您使用Dojo Toolkit :
require(["dojo/json"], function(JSON){
JSON.parse('{"hello":"world"}', true);
});
如果您将字符串变量(格式正确的JSON字符串)传递给MVC @Viewbag中的JSON.parse,并且引号中引用了''',则需要在JSON.parse( jsonstring
)之前处理它,
var jsonstring = '@ViewBag.jsonstring';
jsonstring = jsonstring.replace(/"/g, '"');
您可以像使用其他答案一样使用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.parse(myObject)
会起作用。 但取决于浏览器,可能值得使用eval('('+myObject+')')
。 我可以推荐注意的唯一问题是JSON中的多级列表。
首先,你必须确保JSON代码是有效的。
之后,如果可以,我会推荐使用JavaScript库(如jQuery或Prototype),因为这些东西在这些库中处理得很好。
另一方面,如果您不想使用库并且可以保证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方法。
这真的是未来的理想解决方案。