首页 > js 如何解析json成对象

js 如何解析json成对象

var json='{"name":"gbw","age":18}';
data =(new Function("","return "+json))();

这个方法是怎么做到把字符转换成对象的?


var arr=eval(json);


和@jayzou说的差不多,就是通过字符串构造一个函数,
然后执行这个函数,这个函数内部直接返回了那个json

一般会在JSON.parse不能用的时候所使用的方法,得加上try-catch


了解本题,你先要了解函数的创建方法,函数有多种创建方法,如:
function a(){};
var a=function(){};
var a=new function(){};
var a=Function('','');
var a=new Function('','');

想了解他们的不同请自行百度。
本题创建函数采用了最后一种方法,括号内传入的参数,语句必须以字符串形式传入。如果传入参数没有变量,故为空(也可以省略)。由于new Function("","return "+json)没有用变量接住,故创建了一个匿名函数,等同于

function(){
    return {"name":"gbw","age":18}
}

由于匿名函数不能像命名函数一样用函数名调用,故只能自调。即 (匿名函数体)();该语句就是执行该函数。故
(new Function("","return "+json))();等同于(function(){return {"name":"gbw","age":18})();
所以data={"name":"gbw","age":18};


var jsonObj=JSON.parse(jsonStr)


new Function 转换函数的时候已经把json转成对象了,然后再执行函数体时候返回json对象,改下你的代码就知道了

var json='{"name":"gbw","age":18}',
    data =(new Function("","return console.log("+json +")"))();
【热门文章】
【热门文章】