2013-03-26 95 views
0

我正在使用Firefox 19.0.2。 我接收JSON字符串(轉換爲JavaScript函數)變化的尺寸,將json字符串解析爲javascript對象

有時它是:

var jsonstring = {"CA":"CA","NY":"NY","TX":"TX"} 

有時是:

var jsonstring = {"Hello":"Hello","Goodbye":"Goodbye"} 

我想創建結果數組像這(在第一個例子的情況下):

data[0].value = "CA" 
data[0].text = "CA" 

data[1].value = "NY" 
data[1].text = "NY" 

data[2].value = "TX" 
data[2].text = "TX" 

我該怎麼做?

我在這裏讀了幾十個早期的帖子,並嘗試了幾個for循環,但沒有任何效果。

+1

只要是迂腐:這些都不是「JSON字符串」,這些都是有對象字面聲明JavaScript對象句法。 – Pointy 2013-03-26 15:17:34

+0

@Pointy這不是迂腐,這是一個非常重要的區別。 – 2013-03-26 15:27:25

+0

難道這就是當我循環jsonstring與索引:jsonstring [0],jsonstring [1] ...我得到字母而不是字符串? jsonstring [0] =「{」,jsonstring [1] =「」「,jsonstring [2] =」C「.....? – Rodniko 2013-03-26 15:42:31

回答

1

您可以使用JSON.parse轉換爲一個對象(在你的榜樣,你arleady雖然有一個對象):

var obj= JSON.parse('{"CA":"CA","NY":"NY","TX":"TX"}') 

請記住,你不能依賴屬性的順序中的對象,所以你不能在for循環中完成你想要做的事情。

+0

謝謝Justin,但是我以後做了什麼?我嘗試了一個循環但沒有obj [0]。我也嘗試了obj [0] .key,但是它不起作用如何在解析後在循環中讀取obj的內容? – Rodniko 2013-03-26 16:41:08

+1

嘗試將上面的代碼粘貼到瀏覽器控制檯中,chrome有很好的效果,然後玩弄對象,例如:obj.CA =='CA' – 2013-03-26 16:46:35

0

使用JSON.parse來從JSON對象後的變換,看起來這樣的事情:

obj = { 
    CA: 'CA', 
    LA: 'LA' 
}; 

arr = []; 

for (var key in obj) { 
    if(!obj.hasOwnProperty(key)) 
    continue; 
    arr.push({value: key, text: obj[key]}); 
} 
// Output 
[{ value: "CA", text: "CA" }, { value: "LA", text: "LA" }]