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);

这个问题在这里已经有了答案:

我想在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.resultjsonObject.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方法。

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





parsing