如何在jQuery中将JSON字符串转换为JavaScript对象?

时间:2009-05-28 15:12:11

标签: javascript jquery json

我的数据库中有一个字符串我想进入我的页面并转换为JavaScript对象。

[
{id: 1,title: "Long Event",
       start: new Date(2009, 5, 6, 14, 0),end: new Date(2009, 5, 11)},
{id: 2,title: "Repeating Event",
       start: new Date(2009, 5, 2)},
{id: 3,title: "Meeting",
       start: new Date(2009, 5, 20, 9, 0)},
{id: 4,title: "Click for Facebook",
       start: new Date(2009, 5, 27, 16),end: new Date(2009, 5, 29),
       url: "http://facebook.com/"}
]

如何使用jQuery执行此操作?

7 个答案:

答案 0 :(得分:64)

从jQuery 1.4.1开始,你可以原生这样做

jQuery.parseJSON

请参阅jQuery documentation

答案 1 :(得分:7)

“官方”json2.js脚本包含2个方法:一个可以安全地将任何JSON字符串解析为对象(JSON.parse),另一个将对象转换为JSON字符串(JSON.stringify)

可以找到脚本here

在上面的帖子中,我建议使用eval(),但实际上有一种更好的方法来评估JSON(如果你不想使用json2.js脚本):

var obj = (new Function("return " + json))();

使用json2.js脚本:

var obj = JSON.parse(json);

答案 2 :(得分:2)

eval()怎么样?

var obj = eval(jsonString);

答案 3 :(得分:1)

查看JQuery-json插件

var thing = {plugin: 'jquery-json', version: 1.3};

var encoded = $.toJSON(thing);              //'{"plugin": "jquery-json", "version": 1.3}'
var name = $.evalJSON(encoded).plugin;      //"jquery-json"
var version = $.evalJSON(encoded).version;  // 1.3

答案 4 :(得分:1)

你看过jquery-json插件了吗?

答案 5 :(得分:0)

使用

jQuery.getJSON(url, data, callback)

或将“json”传递为type parameter:

 parameter: 

jQuery.get( url, data, callback, type )
jQuery.get( url, data, callback, type )

*以防万一从ajax请求中提取“字符串”

答案 6 :(得分:-1)

虽然您可以使用eval命令,但您需要首先检查它是否安全。我用:

var data = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.
           test(source.replace(/"(\\.|[^"\\])*"/g, '')))     
           && eval('(' + source + ')');

这应该有用(它已经从原版调整了一下)。关键点是检查JSON字符串以防止函数和其他实际可执行代码偷偷摸摸。 (第一个正则表达式是重要的一点)。

那就是说,JSON插件非常好。