Javascript 使用动态键检索JSON响应数据

Javascript 使用动态键检索JSON响应数据,javascript,reactjs,Javascript,Reactjs,我正在我的应用程序中调用一个API,需要深入研究JSON响应。其中有一个随机字符串,它会发生变化,因此我无法硬编码该值。无论随机字符串是什么,有没有一种方法可以访问dataset1 { "data": { "Random String that Changes": { "dataset1": { "date": {...} }, "dataset2":{

我正在我的应用程序中调用一个API,需要深入研究JSON响应。其中有一个随机字符串,它会发生变化,因此我无法硬编码该值。无论随机字符串是什么,有没有一种方法可以访问dataset1

{
    "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.data
response.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);
}