簡體   English   中英

如何在jQuery中將JSON字符串轉換為JavaScript對象?

[英]How do I convert a JSON string to a JavaScript object in jQuery?

我的數據庫中有一個字符串我想進入我的頁面並轉換為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做到這一點?

從jQuery 1.4.1開始,您可以本機執行此操作

jQuery.parseJSON

請參閱jQuery文檔

“官方”json2.js腳本包含2個方法:一個可以安全地將任何JSON字符串解析為對象(JSON.parse),另一個將對象轉換為JSON字符串(JSON.stringify)

腳本可以在這里找到。

在上面的帖子中,我建議使用eval(),但實際上有一種更好的方法來評估JSON(如果你不想使用json2.js腳本):

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

使用json2.js腳本:

var obj = JSON.parse(json);

eval()怎么樣?

var obj = eval(jsonString);

看看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

你看過jquery-json插件了嗎?

使用

jQuery.getJSON(url, data, callback)

或傳遞“json”作為type parameter:

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

same applies to:

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

*以防萬一從ajax請求中獲取“字符串”

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

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

這應該工作(它已經從原來調整了一點)。 關鍵點是檢查JSON字符串以防止函數和其他實際可執行代碼偷偷摸摸。 (第一個正則表達式是重要的一點)。

也就是說,JSON插件非常好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM