javascript - 将 JSONobj 转换为 Obj 不起作用?

标签 javascript json

我正在尝试使用以下方法将 JSON 对象转换为“普通”对象...

        var slaobj = eval('('+s+')');

s 是 JSON。然而,它似乎不起作用(它的“.length”返回为未定义)。我做错了什么?

最佳答案

It's `.length' is coming back as undefined

它不一定具有 length 属性,除非它是一个数组或其他具有该属性的对象。例如:

var json = '{"foo": "Value of foo"}';
var obj = eval('(' + json + ')');
alert(obj.foo); // alerts "value of foo"
alert(obj.length); // alerts "undefined", there's no `length` in `obj`

Live example

<小时/>

离题:使用 eval 反序列化 JSON 文本可能会产生安全问题,除非您可以明确信任 JSON 文本的来源(例如,它是您的自己的服务器,并且您通过 SSL 连接),因为 eval 不解析 JSON,它解析并运行 JavaScript 代码。 (添加括号并没有真正的帮助。)您可以从 Douglas Crockford 的 Github page 获得使用 eval 的替代方法。 (他是 JSON 的发明者)。最后我检查了一下,有三个替代方案,其中两个根本不使用 eval;有关详细信息,请参阅页面底部的自述文件。

关于javascript - 将 JSONobj 转换为 Obj 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4933734/

相关文章:

php - $.getJSON 返回未定义的结果

javascript - BootStrap 模态不想关闭

javascript - 按回车离开 ContentEditable 框

javascript - 菜单动画从顶部功能滑动

javascript - 如何在JS中根据子值获取父级JSON对象

javascript - 为每个循环嵌套重构

javascript - 在 JSF 中如何在使用 backing bean 方法获取值后调用 java 脚本

javascript - 单击按钮时我的表单总是提交,无论我做什么

javascript - 使用JavaScript 巧妙处理ColdFusion 9 序列化的查询数据?

javascript - Angular .js : How to bind "change" event to service