[英]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做到這一點?
“官方”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.