2014-07-01 50 views
1

我對JSON非常陌生,爲了完成這項工作而苦苦掙扎。我必須像給出的圖中那樣獲取「提取」的值。該圖是json的對象圖。值21721040可以是隨機的,因此我不知道其中一個成員尋找的對象的名稱。JSON獲取對象名稱爲隨機的對象的參數的值

因此,我不能這樣做

query.pages.21721040.extract 

enter image description here

所以,我怎麼能得到 「提取物」 的價值?

出於好奇,當我嘗試訪問其中一個成員時,名稱爲數字的對象是否會產生錯誤?或者他們只是工作?例如,在這種情況下,對象名稱之一是「-1」。

enter image description here

如果我嘗試在JS解析這樣的後訪問值 「URL」:

query.pages.-1.imageinfo.0.url 

將它拋出一個錯誤?

+0

您是否事先知道該ID? –

+0

嘗試'query.pages [「 - 1」]。imageinfo [0] .url' – Kamrul

+0

沒有。只能在運行時知道。 –

回答

1

試試這個:

query.pages[Object.keys(query.pages)[0]].extract 
+0

json的Javascript的索引是mashed。你能評論一下嗎,你的方法總會返回正確的值嗎? –

+1

請嘗試讓我知道它是否無效。 – abdulbasit

+0

由於Object.keys()返回實際數組而不是對象,它與我的答案不同。 –

1

如果你不知道屬性名稱,你可以在自己的對象的屬性迭代:

for (var key in query.pages) { 
    if (query.pages.hasOwnProperty(key)) { 
     console.log(query.pages[key].extract); 
    } 
} 

或者,你可以用比較現代的Object.keys()獲得密鑰的數組,對象具有。

+0

它是一個屬性還是一個子對象?從非常有限的知識我看它看起來像一個對象,因爲它包含鍵:值對,它本身不是一個鍵值對。 –

+0

它可以修改爲僅註冊包含「提取」的屬性嗎?或者我需要檢查空值? –

+0

@AshwinSingh是*什麼*屬性或子對象?我不認爲財產和子女對象是互斥的條款。 –

1

嘗試query.pages["-1"].imageinfo[0].url。 實際上所有的字段都可以視爲字符串。所以你可以寫query["pages"]["-1"]["imageinfo"]["0"]["url"]

如果你不知道key,使用Object.keys()找出與該對象相關的鍵。這key可以是任何key屬於objectobject它已被繼承。僅查找對象自己的密鑰用戶hasOwnProperty