当我没有'我不知道关键值

How do I retrieve a key from a JSON response, when I don't know the key value?

本文关键字:我不知道 键值      更新时间:2023-09-26

这可能真的很简单,但我一直在努力想办法。

我需要从JSON响应中获取一个值,但响应中返回的密钥是随机的,所以我不能直接引用它来深入它

以下是我得到的回复:

var c = {
         "success": { 
                    "7d40ab5352b0471cae5bdefc2e032840": { 
                          "__type__" : "user",
                          "__id__" : "7d40ab5352b0471cae5bdefc2e032840"
                    }
         },
         "errors": {}
         }

我需要的是你在那里看到的随机字符串——ID。我试过各种各样的事情,但一辈子都想不出如何将ID作为字符串返回。我试过用数组表示法c.success[0][0]来实现它,但没有成功。很明显,我不能使用点号法,因为我不知道该在后面加什么。成功。

有人知道在事先不知道数组密钥的情况下该怎么办吗?我想确保我这样做的方式被认为是最好的做法,而不是黑客。

谢谢。。。如果我不知何故错过了这个问题的答案,请以这种方式发给我。我找了好几天都找不到这个答案。

这:

var obj = c.success[ Object.keys( c.success )[0] ];
obj.__type__ // "user"
obj.__id__ // "7d40ab5352b0471cae5bdefc2e032840"

现场演示:http://jsfiddle.net/AJaBS/

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
}

尽管Šime Vidas对Object.keys的使用更加优雅,除非您使用所谓的him,否则您将需要上面的代码才能在旧的浏览器中工作(即,您添加了一些额外的代码,使您今天可以使用新的标准——即,Object.keys的实现,它做的事情与我上面做的一样,除非已经存在内置版本,在这种情况下,填充程序将优先于内置版本)。

您可以使用一个简单的循环:

for (var id in c.success) {
    var obj = c.success[id];
    // do something
}

如果要确保只处理对象中的第一个属性,可以在最后添加break;语句。