Javascript 使用动态键解析JSON字符串

Javascript 使用动态键解析JSON字符串,javascript,json,Javascript,Json,我有如下JSON数据- var raw = {"raw":[{"W4Jlp9HKx_MVImNZuJwPqA!!:dgIN_ZskRAf5OtpgZ7tYLQ!!":{"name":"Name1","uniqID":"W4Jlp9HKx_MVImNZuJwPqA!!:dgIN_ZskRAf5OtpgZ7tYLQ!!"},"uFzQkOcsEwmRDGlob11Qiw!!:ArYiisKagqjnqMGfbKP7Yw!!":{"name":"Name2","uniqID":"uFzQkOcsEwm

我有如下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实现这一点,如果不可能,请随时告诉我可以用什么语言实现

非常感谢

---编辑---

注释中给出了使用带有特殊字符的键获取值的答案,我必须使用[]符号来获取结果。谢谢大家!! 但是关于使用key-position获取结果的第二个问题仍然是key-name


在以下情况下,如果您在以下时间之前执行密钥,则可能会起作用:

Object.defineProperty(Object.prototype,"key",{
 enumerable:false,
 value: function(key){
    return this[Object.keys(this)[key]||key];
  }
});
或者,如果您不介意使用本地方式:

Object.values(arra.raw[0])[0].name

这是另一个解决方案

(代码>代码>var数据,{代码>var数据={{{代码>,”代码>VA数据数据=,,,,,,,,,{代码>代码>Va代码>VA数据数据={“原始”数据,,{“原始”数据::{{{原始:::{{{代码>代码>数据>数据>数据>数据>数据>数据>数据>数据数据,数据,数据,数据,以及,数据,数据,数据,数据,以及数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,数据,以及wwww4JGJGGGGGGGGKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJJJJJJJJJJJJJJJJJJGGGGGGGGGGGGGG11全球全球全球全球全球全球全球11 Q9e_6u2yaDbST0A!!”:{“名称”:“Name3”,“uniqID”:“fwcl6bhcvp1wo95-7K3LA!!:xnyxdarq9e6u2;yadbst0a!!”}}}}; for(数据中的var键。原始[0]){ console.log(“KEY:+KEY+”Name:+data.raw[0][KEY].Name+”);
}From,您可以使用括号表示法:
arra.raw[0][“W4Jlp9HKx_MVImNZuJwPqA!!:dgIN_ZskRAf5OtpgZ7tYLQ!!”].name
是否可以更改JSON数据源,因为具有随机或不可知属性名的对象没有那么有用,数组会更好。!!是双精度的。使用括号表示法!@James No,不幸的是,我们无法控制源。:/谢谢,我会尝试。尽管我不太清楚发生了什么在该函数中。酷,唯一令人困惑的是,现在数组、对象、字符串、函数…将具有
方法。@dfsq键,键可能会与贴图冲突…如果多次使用,可能会很有用。非常感谢。这很顺利。
Object.values(arra.raw[0])[0].name