2014-07-01 54 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