我有JSON数据如下 -
var raw = {"raw":[{"W4Jlp9HKx_MVImNZuJwPqA!!:dgIN_ZskRAf5OtpgZ7tYLQ!!":{"name":"Name1","uniqID":"W4Jlp9HKx_MVImNZuJwPqA!!:dgIN_ZskRAf5OtpgZ7tYLQ!!"},"uFzQkOcsEwmRDGlob11Qiw!!:ArYiisKagqjnqMGfbKP7Yw!!":{"name":"Name2","uniqID":"uFzQkOcsEwmRDGlob11Qiw!!:ArYiisKagqjnqMGfbKP7Yw!!"},"fWcL6bvhCvp1wO95-7K3LA!!:XNYxDArq9E_6u2yaDbST0A!!":{"name":"Name3","uniqID":"fWcL6bvhCvp1wO95-7K3LA!!:XNYxDArq9E_6u2yaDbST0A!!"}}]}
键是动态的,即第一个键“W4Jlp9HKx_MVImNZuJwPqA !!:dgIN_ZskRAf5OtpgZ7tYLQ !!”我们对JSON URL进行的每次调用都会发生变化。
我想解析JSON数据并将数据存储在Javascript变量中。
我试图用 -
来解析它var arra = JSON.parse(raw);
并尝试使用
获取值arra.raw[0].W4Jlp9HKx_MVImNZuJwPqA!!:dgIN_ZskRAf5OtpgZ7tYLQ!!.name
但这没有帮助,我没有得到这个值。我不确定为什么会发生这种情况。是因为键包含特殊字符?
如果有一种方法可以列出密钥并使用密钥索引或类似的东西获取值,那将会很棒,例如
arra.raw[0].key(0).name
其中我不必提供密钥,因为它随着每次通话而变化。即使使用密钥名称的工作解决方案现在还不够用。
我更喜欢在Javascript中实现这一点,如果不可能,请随时告诉我用什么语言来实现。
非常感谢!
---编辑---
在评论中给出了使用带有特殊字符的键获取值的答案,我不得不使用[]表示法来获取结果。非常感谢! 但是关于使用关键位置获取结果的第二个问题,比关键名称仍然是开放的。
答案 0 :(得分:1)
window.parent.parent.focus();
如果您在之前实施密钥可能会有效:
arra.raw[0].key(0).name
或者如果你不介意使用原生方式:
Object.defineProperty(Object.prototype,"key",{
enumerable:false,
value: function(key){
return this[Object.keys(this)[key]||key];
}
});
答案 1 :(得分:1)
您可以再使用一个解决方案https://jsfiddle.net/bm1n59hf/1/
var data = {"raw":[{"W4Jlp9HKx_MVImNZuJwPqA!!:dgIN_ZskRAf5OtpgZ7tYLQ!!":{"name":"Name1","uniqID":"W4Jlp9HKx_MVImNZuJwPqA!!:dgIN_ZskRAf5OtpgZ7tYLQ!!"},"uFzQkOcsEwmRDGlob11Qiw!!:ArYiisKagqjnqMGfbKP7Yw!!":{"name":"Name2","uniqID":"uFzQkOcsEwmRDGlob11Qiw!!:ArYiisKagqjnqMGfbKP7Yw!!"},"fWcL6bvhCvp1wO95-7K3LA!!:XNYxDArq9E_6u2yaDbST0A!!":{"name":"Name3","uniqID":"fWcL6bvhCvp1wO95-7K3LA!!:XNYxDArq9E_6u2yaDbST0A!!"}}]};
for(var key in data.raw[0]){
console.log("KEY: " + key + " Name: " + data.raw[0][key].name + " ");
}