2013-06-18 69 views
1

我有一個JSON字符串是這樣的:JSON渲染關鍵數據未發現

{"{\"nodeName\":\"abc\"}":[{"url":"abc","status":true},{"url":"abc","status":true}],"  {\"nodeName\":\"pqr\"}":[{"url":"abc","status":true},{"url":"abc","status":true}]} 

我能夠得到使用(V)的查詢代碼,但沒能獲得密鑰(K)的值。在警報我越來越(未定義ABC正確)。 k的值是未定義的。

$.each(obj, function() { 
     $.each(this, function(k, v) { 
    alert(k.nodeName +" "+ v.url +" "+v.status); 
    }); 
    }); 

我需要(k)的值作進一步驗證。我已驗證JSON字符串以確保它是有效的,所以我在這裏錯過了什麼或者是否有任何其他方式做到這一點?請幫助...

此外,從服務器端我傳遞JSON對象是這樣的:

json.put(js.toString(),jsarray) 

其中

json = json OBject, 
js = json Object, 
jsarray = json Array. 
+0

鍵總是字符串。在這種情況下,它看起來像鍵包含JSON本身。您必須首先將JSON解析爲對象。請參閱http://stackoverflow.com/q/4935632/218196。但說實話,這是一個非常混亂的數據結構。最好直接使用節點名作爲鍵,即你的JSON看起來像'{「abc」:[...],「pgr」:[...],...}'。 –

+0

我已更改json字符串,如下所示: {「abc」:[{「url」:「asd」,「status」:true},{「url」:「as」,「status」:true}] ,「xyz」:[{「url」:「as」,「status」:false},{「url」:「as」,「status」:true}]} 但我需要key的名字作爲abc ,xyz但迭代它給作爲0,1 –

+0

看看我的答案。在內部'$ .each'中迭代該值,即數組。你想要的鑰匙來自外部'$ .each'循環。 –

回答

1

鍵總是字符串。在這種情況下,它看起來像鍵包含JSON本身。您必須首先將JSON解析爲對象。見Parse JSON in JavaScript?

但說實話,這是一個非常混亂的數據結構。最好直接使用節點名作爲鍵,即你的JSON看起來像{"abc": [...], "pgr": [...], ...}

然後你就可以訪問數據,像這樣:

$.each(obj, function(key, arr) { 
    $.each(arr, function(_, v) { 
     alert(key +" "+ v.url +" "+v.status); 
    }); 
}); 
+0

謝謝@Felix Kling ....它爲我工作。自從最近2天以來我一直在尋找這個解決方案。非常感謝:) –

+0

不客氣!當您得到解決問題的答案時,請點擊旁邊的複選標記以「接受」它(您始終只能接受一個答案)。這也向其他人表明這個問題已經解決。 –

+0

該解決方案適用於我。我能夠在警報中獲取值,但是當我嘗試在jstl:set中設置值時,它不起作用。 但關鍵是在jstl中設置:set –