2009-02-04 69 views
2

網站返回以下JSON響應,我將如何使用它(在JavaScript中)?JSON的新功能,該如何處理這個json響應

[{"ID1":9996,"ID2":22}] 

是JSON只是返回一個數組?

+0

你使用什麼平臺來使用它?這是在網頁上的JavaScript代碼,或其他類型的應用程序? – Misko 2009-02-04 19:22:47

+0

[在jQuery中序列化爲JSON](http:// stackoverflow。com/questions/191881/serializing-to-json-in-jquery) – outis 2011-12-26 10:09:33

回答

6

我們使用:

function evalResponse(response) { 
    var xyz123 = null; 
    eval("xyz123 = " + response); 
    return xyz123; 
} 

的另一種方法是簡單地使用:

var myObj = eval(response); 

基本上,你必須調用eval()的響應創建JavaScript對象。這是因爲響應本身只是一個字符串,當你從AJAX調用中獲取它時。在你之後,你有一個你可以操作的對象。

function myCallback(response) { 
    var myObj = evalResponse(response); 
    alert(myObj.ID1); 
} 

您可以使用JavaScript庫來處理這個問題。或者,你可以嘗試自己解析字符串。 eval()有它自己的問題,但它的工作原理。

+0

upvote使用額外的任務來阻止一些安全漏洞:如果它不可分配,則eval將失敗。 – 2009-02-04 19:29:20

+0

謝謝。它仍然可以解決,但它是惡意用戶擔心的額外級別。 – EndangeredMassa 2009-02-04 19:31:00

0

這裏是你如何讓你的數據:

<script type="text/javascript" > 
var something = [{"ID1":9996,"ID2":22}] 
alert(something[0].ID1) 
</script> 
2

它看起來像一個單一的對象容納兩個屬性的數組。我更喜歡看到構造這樣相同的數據:

{「ID」:[9996,22]}

然後,你有一個單一的物體保持具有兩個元件的陣列,這似乎更適合所提供的數據。然後使用瀕危的evalResponse()代碼也可以用它像這樣:

var responseObj = evalResponse(response); 

// responseObj.ID[0] would be 9996, responseObj.ID[1] would be 22 
0

您發佈的JSON表示含有一個對象的陣列,其具有的屬性ID1和ID2(冒號後初始化爲各自的值)。

將字符串轉換爲JavaScript對象,它傳遞給EVAL,像這樣:

var obj = eval('[{"ID1":9996,"ID2":22}]'); 

然而,這種方法會失敗,如果你只有一個單一的對象,而不是一個數組,因此它是安全的把它包起來括號:

var obj = eval('(' + jsonResponse + ')'); 
7

如果使用http://www.JSON.org/json2.js你可以使用它的方法JSON.parse來檢索JSON字符串對象(不使用eval(這被認爲是邪惡)),所以在這種情況下喲ü可以用:

var nwObj = JSON.parse('[{"ID1":9996,"ID2":22}]'); 
alert(nwObj.ID1); //=> 9996 
1

我覺得其他的答案可能不回答你的問題,也許你正在尋找一種方式來使用「1個對象的數組」。也許這可以幫助:

var arr = [{"ID1":9996,"ID2":22}]; 
var obj = arr[0]; 
var id1 = obj.ID1; 
var id2 = obj.ID2;