使用动态密钥检索JSON响应数据

我正在我的应用程序中调用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
w513166440 回答:使用动态密钥检索JSON响应数据

您可以使用获取所有对象的键

const keys = Object.keys(this.props.data);

现在keys是所有键的数组,但是如果json始终只有1个键,则可以使用

获取数据

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

const values = Object.values(this.props.data)
console.log(values[0]['dataset1'])

请确保您的json首先包含“更改的随机字符串”,如上述格式所示。

参考:Object.values

,

尝试像这样访问对象:

const obj = this.props.data;

obj[Object.keys(obj)[0]].dataset1.date

参考:How to access the first property of an object in Javascript?

,
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
,

您可以尝试for in循环

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);
}
本文链接:https://www.f2er.com/3162136.html

大家都在问