我无法通过键值访问JSON属性。
这是我的JSON,我想以字符串格式访问overSerializedItems
和underSerializedItems
,但无法显示任何数据
response = [{
"storeId": "2011",
"overSerializedItems": [{
"overshipid": "8901260932784148868F"
},
{
"overshipid": "8901260145723866348F"
},
],
"underSerializedItems": [],
},
{
"storeId": "2011",
"overSerializedItems": [],
"underSerializedItems": [{
"undershipid": "89"
},
{
"undershipid": "81"
},
],
}
]
我正在尝试以下方法,但收到错误消息“无法读取未定义的属性tostring()”
for(const item of response) {
const json = {
'Store #': item.storeId,
'Overshipment': item.overSerializedItems !== null ?
item.overSerializedItems.overshipid.toString() : [], //Here values i should get 8901260932784148868F,8901260145723866348F
'Undershipment':item.underSerializedItems !== null ?
item.underSerializedItems.undershipid.toString() : [] // Here values i should get are 89,81
}
}
答案 0 :(得分:1)
您正在使用!== null
检查响应中是否缺少overSerializeItems
和/或underSerializedItems
。该检查将是错误的,因为如果不存在它们,则当您尝试在对象上访问它们时,将得到undefined
,而不是null
。
在这两种情况下,由于它们既不存在也不存在,因此只需使用item.overSerializedItems ?
防护:
for (const item of response) {
const obj = { // not JSON
'Store #': item.storeId,
'Overshipment': item.overSerializedItems ?
item.overSerializedItems : [],
'Undershipment': item.underSerializedItems ?
item.underSerializedItems : []
}
console.log(obj);
}
,或者如果不提供该数组,则提供默认的[]
,请使用||
:
for (const item of response) {
const obj = { // not JSON
'Store #': item.storeId,
'Overshipment': item.overSerializedItems || [],
'Undershipment': item.underSerializedItems || []
}
console.log(obj);
}
还请注意,.toString()
和overshipid
上的undershipid
毫无意义;它们已经是字符串。但是无论如何,我已经删除了该内容,因为您试图在数组上使用.overshipid
和.undershipid
;它们不作为数组的属性存在,而是作为对象在中的属性存在。 (删除它们也会使这里的[]
默认值更有意义。)
实时示例:
const response = [{
"storeId": "2011",
"overSerializedItems": [{
"overshipid": "8901260932784148868F"
},
{
"overshipid": "8901260145723866348F"
},
],
"underSerializedItems": [],
},
{
"storeId": "2011",
"overSerializedItems": [],
"underSerializedItems": [{
"undershipid": "89"
},
{
"undershipid": "81"
},
],
}
];
for (const item of response) {
const obj = { // not JSON
'Store #': item.storeId,
'Overshipment': item.overSerializedItems || [],
'Undershipment': item.underSerializedItems || []
}
console.log(obj);
}
.as-console-wrapper {
max-height: 100% !important;
}