Javascript JSON无法准备null属性
我正在调用返回JSON数组的API,我在这个数组上迭代,将每个值映射到新对象,然后将其推送到新数组 问题是当API中的值为Javascript JSON无法准备null属性,javascript,arrays,json,api,Javascript,Arrays,Json,Api,我正在调用返回JSON数组的API,我在这个数组上迭代,将每个值映射到新对象,然后将其推送到新数组 问题是当API中的值为nulli get时 Cannot read property 'name' of null 但在我的代码中,我正在处理null,但仍然得到这个错误 let comArr = []; JSONData.issues.forEach(element => { comArr.push({ Resolution: (element.
null
i get时
Cannot read property 'name' of null
但在我的代码中,我正在处理null
,但仍然得到这个错误
let comArr = [];
JSONData.issues.forEach(element => {
comArr.push({
Resolution: (element.fields.resolution.name === null) ? "some default value" : element.fields.resolution.name,
});
});
在相同的情况下,
element.fields.resolution
似乎是null
。在您的声明中添加第二个if检查,如:
if (element.fields.resolution === null){
comArr.push({ Resolution: "some default value" });
}
else{
comArr.push(Resolution: (element.fields.resolution.name === null) ? "some default value" : element.fields.resolution.name);
}
问题是在某些情况下,您的
分辨率
对象是null
,因此您应该先检查对象是否存在。一个更干净的解决方案是使用map
,因为您总是在推一个对象,而不是使用forEach
:
const JSONData={
问题:[
{
字段:{}
},
{
字段:{
决议:{
姓名:“富”
}
}
},
{
字段:{}
},
{
字段:{
决议:{
名称:“酒吧”
}
}
}
]
}
const output=JSONData.issues.map({fields:{resolution}})=>({
Resolution:Resolution&&Resolution.name?Resolution.name:“某些默认值”
}))
console.log(output)
从错误和您提供的代码来看,解析
似乎是空的
而不是名称
本身。很抱歉,当我记录元素.fields.resolution.name
是空的尝试(element.fields.resolution==null | | | element.fields.resolution.name==null)
您应该先检查每个部分是否存在故障,然后是element.fields,然后是element.fields.resolution,最后是element.fields.relolution.name,同样在JavaScript中null没有任何意义,检查是否存在未定义的问题。嘿,这就是问题,我将接受答案,你能告诉我如何更优雅地处理这些异常吗,因为我有30多个值。嘿,谢谢,但是,看起来不像以前那样像错误一样工作:(@Exc我添加了一个可运行的代码段。问题是我把三元语句放错了方向,我的错。