Javascript 使用动态键检索JSON响应数据
我正在我的应用程序中调用一个API,需要深入研究JSON响应。其中有一个随机字符串,它会发生变化,因此我无法硬编码该值。无论随机字符串是什么,有没有一种方法可以访问dataset1Javascript 使用动态键检索JSON响应数据,javascript,reactjs,Javascript,Reactjs,我正在我的应用程序中调用一个API,需要深入研究JSON响应。其中有一个随机字符串,它会发生变化,因此我无法硬编码该值。无论随机字符串是什么,有没有一种方法可以访问dataset1 { "data": { "Random String that Changes": { "dataset1": { "date": {...} }, "dataset2":{
{
"data": {
"Random String that Changes": {
"dataset1": {
"date": {...}
},
"dataset2":{
"date": {...}
}
}
},
"something else": {
...
},
"something else": {
...
}
}
之前,我是这样硬编码深入的:
this.props.data.randomData['Random String that Changes'].dataset1.date
还尝试:
this.props.data.randomData[0].dataset1.date
尝试如下方式访问对象:
const obj = this.props.data;
obj[Object.keys(obj)[0]].dataset1.date
参考:您可以使用
const keys=Object.keys(this.props.data)代码>
现在keys
是一个所有键的数组,但是如果json总是只有一个键,那么可以使用
this.props.data.randomData[keys[0]].dataset1.date
请检查以下代码以获取解决方案
var response = {
"data": {
"Random String that Changes": {
"dataset1": {
"date": {...}
},
"dataset2":{
"date": {...}
}
}
},
"something else": {
...
},
"something else": {
...
}
};
var dataInRandomKey = response.data[Object.keys(response.data)[0]];
现在,在dataInRandomKey变量中有了整个JSON对象(在当前示例中,是response['data']['Random String that Changes'])。您可以获得dataset1
确保您的json首先包含“随机变化字符串”,如上面的格式所示
参考资料:您可以在循环中尝试
var a = {
"data": {
"Random String that Changes": {
"dataset1": {
"date": {...}
},
"dataset2":{
"date": {...}
}
}
},
"something else": {
...
},
"something else": {
...
}
}
var response = a.data;
for(var key in response) {
console.log(response[key].dataset1);
}
更改的随机字符串是否是数据的唯一属性?
?是的-谢谢回复@StephanieMarker你到底面临什么问题?什么是数据。随机数据?随机数据是动态变化的关键。Alsp如果道具中有道具,则应使用道具所在的按键,例如:this.props.key.dataresponse.data
不是一个可编辑的函数。现在工作正常。randomData
是随机的,不是单词randomData
好的,我的坏消息将更新answer@Bravo更新的应答器随机数据不是固定的。这是动态的关键。
Consider sample data in myObj.
var myObj = {
"data" : {
"Random String that Changes": {
"dataset1": {
"date": "123"
},
"dataset2":{
"date": "123"
}
}
}
}
var randomString =myObj[Object.keys(myObj)[0]];
var dataset1Date =randomString[Object.keys(randomString)[0]].dataset1.date;
console.log(dataset1Date);
So in this way you can access the date which you are trying with
this.props.data.randomData['Random String that Changes'].dataset1.date
var a = {
"data": {
"Random String that Changes": {
"dataset1": {
"date": {...}
},
"dataset2":{
"date": {...}
}
}
},
"something else": {
...
},
"something else": {
...
}
}
var response = a.data;
for(var key in response) {
console.log(response[key].dataset1);
}