2013-01-22 14 views
0

嗨傳遞一個外部變量我試圖通過使用JSON.parse功能下在JSON.parse功能

{ 
"rows": 10, 
"os": "0", 
"page": "1", 
"total": "122", 
"projects": { 
"P143841": { 
"id": "P143841", 
"locations": [ 
{ 
"geoLocId": "0002220957", 
"latitude": "3.866667", 
"longitude": "11.516667" 
} 
], 
} 
} 
} 

我能夠獲得價值的json響應給得到一個JSON值10如果我做JSON.parse(obj.rows);但如果我將行分配給變量說var value = rows然後我把它傳遞給JSON.parse(obj.value)函數我得到undefined

P.S我不會知道響應參數的名稱(即)我不知道如果它將是行或操作系統,如果我從上面的例子引用。我會從數據庫 來檢索它們。如果我執行下面的代碼

for(var i=0;i<length;i++){ 
var value = responseParam_array[i]; 
console.log(obj.value); 
} 

我得到的輸出,但。任何幫助將非常感激。

+0

按F12和調試 –

回答

2

根據其他答案,您不需要分析單個屬性,只需解析原始JSON,然後對結果對象進行操作。

但對於這個問題:

「如果我給你的行變量說var value = rows,然後我把它傳遞給JSON.parse(obj.value)功能我undefined

如果value是一個持有obj屬性名稱的變量,那麼您需要:

obj[value] 
// NOT 
obj.value 

當您使用「點」符號時,點右側的部分將作爲屬性的文字名稱,而不是作爲變量。使用方括號語法來評估括號中的表達式,並將其結果作爲屬性名稱。

+0

感謝它的工作:) –

+0

我做你建議。但如果我必須解析說obj.projects.P143841.locations [0] .latitude,如果我將它傳遞到obj [值]我得到未定義。 (即)obj [projects]將被打印,但obj [projects.P143841.locations [0] .latitude]拋出undefined.Any建議將非常有用 –

+1

嘗試'obj [projects] .P143841.locations [0] .latitude '。如果您要鏈接多個屬性,則每個屬性都需要使用點符號或括號,請勿將整個名稱鏈置於同一組括號內。 'obj [projects] [「P143841」] [「locations」] [0] .latitude'(以及其他變體)也可以使用。 – nnnnnn

0

如果我明白你的問題:

var str = '{ "some": "JSON String like the one above with", "rows": 10 }'; 
var parsed = JSON.parse(str); 
var whatYouWant = parsed.rows; 
0

你應該JSON-解析你的整個對象並使用解析的對象之後(你不需要解析每個屬性本身)

var strObj = '{"rows": 10,"os": "0","page": "1","total": "122","projects":{"P143841":{"id":"P143841",}}'; 

var obj = JSON.parse(strObj); 
var rows = obj.rows;