2012-10-19 111 views
0

我有AS-JSON字符串解析錯誤

var RetailerData = {}; 

// The object that the JSON string should represent, can use this as it is if you want. 

RetailerData.webSites = [ 
{ 
    id: 1, 
    text: 'J.Crew', 
    image: 'images/retailer-logo/jcrew.png', 
    extra: 'www.jcrew.com' 
}, 
{ 
    id: 2, 
    text: 'GAP', 
    image: 'images/retailer-logo/gap.png', 
    extra: 'www.gap.com' 
}]; 

我想使用jQuery $.parseJSON讓每個值解析它一個JSON字符串。我曾嘗試過使用

var obj = $.parseJSON(RetailerData.webSites); 

$.each(obj, function() { 
    console.log(this['id']); 
}); 

但是在每次嘗試中都會出現連續錯誤。任何人都可以告訴一個合適的方法來做這件事 在此先感謝。

+2

JSON是一個**字符串**。你在那裏已經有了一個JavaScript對象。這裏沒有太多解析,呃? –

+0

對不起,如果我問了一些愚蠢的東西,我還處於學習階段。你能以簡單的方式解釋我嗎?謝謝 – user1719367

回答

0

您正在嘗試將JavaScript對象轉換爲JavaScript對象,這沒有任何意義!您可以做的是

var str = JSON.stringify(RetailerData.webSites); 

並使用str將您的數據傳輸到別的地方。然後使用

var obj = JSON.parse(str); 

,讓您的原始對象回來,它已經從另一個來源修改(或沒有)之後。

+2

首先序列化一個對象,然後反序列化它是否更有意義?只需立即使用'RetailerData.websites'。 –

+0

因此,「使用'str'將數據傳輸到其他地方」。將數據串化的全部目的是便攜性。 –

+0

考慮到OP在一個代碼塊中顯示了不必要的解析步驟和對象的使用情況,因此可以安全地假定不需要「將數據傳輸到別處」。序列化僅適用於與需要固定格式(如JSON)的(外部)API進行交互。然而,在JS應用程序中,(de)序列化兩次只是一個冗餘步驟。 –

0

您可以使用parseJSON將jsonString解析爲json對象。

但在你的情況下,RetailerData.webSites已經是一個json對象,不需要解析它。

var obj = RetailerData.webSites; 

$.each(obj, function() { 
    console.log(this['id']); 
}); 
+1

有沒有稱爲「json對象」(不包括'JSON'對象包含'JSON.parse'等)的事情。你實際上的意思是一個JavaScript對象,用對象文字表示('{}')。 JSON中的N代表*符號*; JSON是*字符串格式*,不多也不少。 –

+0

謝謝大家的寶貴幫助。它的工作現在。 – user1719367