[英]How do I retrieve a key from a JSON response, when I don't know the key value?
这可能真的很简单,但是我已经把头撞在墙上试图弄清楚。
我需要从JSON响应中获取一个值,但是响应中返回的键是随机的,因此我无法直接引用它来进行深入研究。
这是我得到的回复:
var c = {
"success": {
"7d40ab5352b0471cae5bdefc2e032840": {
"__type__" : "user",
"__id__" : "7d40ab5352b0471cae5bdefc2e032840"
}
},
"errors": {}
}
我需要的是您在此处看到的随机字符串-ID。 我已经尝试过各种方法,但终生无法弄清楚如何以字符串形式返回ID。 我试图用数组符号c.success[0][0]
来解决这个问题,但没有用。 显然,我不能使用点符号,因为我不知道在.success之后加上什么。
有人知道在事先不知道数组键的情况下该怎么做吗? 我想确保以一种最佳做法而不是黑客的方式来执行此操作。
谢谢...如果我因某种原因错过了本已发布的答案,请以这种方式发送给我。 我搜索了几天,找不到此答案。
for (var prop in c.success) {
alert(c.success[prop].__id__); // Replace the alert with whatever you want to do with the ID
// break; // Uncomment if there can be more than one ID returned and you only want one
}
如果键与__id__
值相同,则只需执行以下操作:
for (var prop in c.success) {
alert(prop); // Replace the alert with whatever you want to do with the ID
// break; // Uncomment if there can be more than one ID returned and you only want one
}
尽管ŠimeVidas对Object.keys的使用更为优雅,但除非使用所谓的他,否则您仍需要上述代码才能在较旧的浏览器中工作(即,添加一些额外的代码以使您今天使用新的标准,即,一个Object.keys的实现,它的实现与上述操作相同,除非已经存在内置版本,在这种情况下,填充程序将优先使用内置版本)。
这个:
var obj = c.success[ Object.keys( c.success )[0] ];
obj.__type__ // "user"
obj.__id__ // "7d40ab5352b0471cae5bdefc2e032840"
现场演示: http : //jsfiddle.net/AJaBS/
您可以使用一个简单的循环:
for (var id in c.success) {
var obj = c.success[id];
// do something
}
如果要确保仅处理对象中的第一个属性,则可以添加一个break;
声明到底。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.