Javascript 在迭代有效的JSON时,无法将未定义或null转换为对象
我有这个结构的有效JSONJavascript 在迭代有效的JSON时,无法将未定义或null转换为对象,javascript,json,loops,Javascript,Json,Loops,我有这个结构的有效JSON const myJSONExample = { "SubItems": [ { "SubItems": [ { "ItemNo": "000001" } ], "ItemNo": null, "Number": null, "price": 114.46 }, { "SubItems": [ {
const myJSONExample = {
"SubItems": [
{
"SubItems": [
{
"ItemNo": "000001"
}
],
"ItemNo": null,
"Number": null,
"price": 114.46
},
{
"SubItems": [
{
"Group": "0.4.004"
}
],
"type": null
},
{
"SubItems": [
{
"ItemNo": "000005"
},
{
"Quantity": 2
}
],
"Material": "Steel"
},
{
"Description": null
}
]
}
只是简单地尝试格式化其中的所有数字类型,使用递归迭代
const iterate = (obj) => {
Object.keys(obj).forEach(key => {
if(typeof(item[key]) == "number"){
item[key] = new Intl.NumberFormat("de-DE").format(item[key]) //format number for german lang.
}
if (typeof obj[key] === 'object') {
iterate(obj[key])
}
})
}
iterate(myJSONExample);
我在其他JSON上使用了这个函数,并试图理解为什么会抛出TypeError:cannotconvert undefined或null-to-object
null是一个“object”,这就是你的问题。所以加上一张真实的支票
const iterate = (obj) => {
Object.keys(obj).forEach(key => {
const value = obj[key]
const valueType = typeof value
if (valueType === "number") {
obj[key] = new Intl.NumberFormat("de-DE").format(value)
} else if (valueType === 'object' && value) {
iterate(value)
}
})
}
null是一个“对象”,因此是您的问题。所以加上一张真实的支票
const iterate = (obj) => {
Object.keys(obj).forEach(key => {
const value = obj[key]
const valueType = typeof value
if (valueType === "number") {
obj[key] = new Intl.NumberFormat("de-DE").format(value)
} else if (valueType === 'object' && value) {
iterate(value)
}
})
}
null是一个objectnull是一个object谢谢。但你的意思是obj[key]而不是item[key],对吗?谢谢。但你的意思是obj[key]而不是item[key],对吗?