javascript - js 如何解析json成对象
阿神
阿神 2017-04-11 10:28:28
[JavaScript讨论组]

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

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

阿神
阿神

闭关修行中......

全部回复(5)
高洛峰

了解本题,你先要了解函数的创建方法,函数有多种创建方法,如:
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};

ringa_lee

var jsonObj=JSON.parse(jsonStr)

ringa_lee

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

var json='{"name":"gbw","age":18}',
    data =(new Function("","return console.log("+json +")"))();
PHP中文网

var arr=eval(json);

PHP中文网

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号