我有一个像这样的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",
}
]
}
}
为什么会出现此错误?
[未处理的承诺拒绝:TypeError:未定义不是对象 (评估“ _this2.state.kasus_baru.nodes.map”)]
答案 0 :(得分:0)
出现错误的原因是,您尝试映射的对象未定义。
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
})
答案 1 :(得分:0)
向我显示您尝试访问对象的代码。如该响应所述,您正在尝试访问其键在当前对象中不存在的对象。例如,您尝试访问
之类的密钥data.nodes.id将引发异常。您需要访问它data.nodes [index] .id
答案 2 :(得分:0)
我已经解决了这个问题, 答案是我必须在得到响应后添加.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响应具有数据密钥。
感谢所有帮助我的人