繁体   English   中英

不知道键值时,如何从JSON响应中检索键?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM