React Native 循环 Json 响应
我有这样的 json 数据,但出现错误,如何修复?我的代码: 我想显示“节点”内的数据,但首先我想在 console.log 中检查它,但出现错误
constructor(props){
super(props);
this.state = {
kasus_baru: {},
isError : false,
isLoading : true,
};
}
axios.get('xxxxxx')
.then(res=>{
const data_kasus = res.data;
this.setState({kasus_baru : data_kasus });
//console.log(this.state.kasus_baru)
this.state.kasus_baru.nodes.map((obj,i) => {
console.log(obj[i].kasus);
});
})
以下是响应:
{
"data": {
"nodes": [{
"id": 1,
"kasus": 1,
"klaster": "DKI JAKARTA",
},
{
"id": 2,
"kasus": 2,
"klaster": "DKI JAKARTA",
}
]
}
>
为什么会出现此错误?
[Unhandled promise rejection: TypeError: undefined is not an object (evaluating '_this2.state.kasus_baru.nodes.map')]
向我展示您尝试访问对象的代码。正如此响应所述,您正在尝试访问其键在当前对象中不存在的对象。例如,您尝试访问像
data.nodes.id 这样的键,这将引发异常。您需要访问它 data.nodes[index].id
您收到错误的原因是您尝试映射的对象未定义。
this.state. kasus_baru .nodes.map((obj,i) => { console.log(obj[i].kasus); });
我强烈建议您调试代码并查看 JSON 响应是否有效,并且在访问对象的属性时,验证它们是否存在。
意思是,检查
.nodes
是否是 kasus_baru 的实际属性。
您可以使用
kasus_baru.hasOwnProperty("nodes")
此外,如果您从响应中获得了对象,为什么要通过状态访问它?
更新(由于 OP 的评论)
您遇到的问题不是循环,而是遍历节点,而是查看从请求中收到的数据是否有效。
为了做到这一点,我会这样做以下:
axios.get('xxxxxx')
.then(res=>{
const data_kasus = res.data;
if (data_kasus.hasOwnProperty('nodes')) {
var nodes = data_kasus['nodes'];
for(let index = 0; index < nodes.length; index++) {
var node = nodes[index];
//Do your logic here...
} //end for
} // end if
})
我已经解决了这个问题, 答案是我必须在收到响应后添加 .data
.then(res=>{
const data_kasus = res.data.data;
})
响应数据:
{
"data": {
"nodes": [{
"id": 1,
"kasus": 1,
"klaster": "DKI JAKARTA",
},
{
"id": 2,
"kasus": 2,
"klaster": "DKI JAKARTA",
}
]
}
因为 json 响应有数据键。
谢谢大家的帮助