** 场景:**
- 我正在使用 lodash 从 JSON 中删除空 key 。
但是当它删除键时,它会将我的数组转换为对象,例如
{ "projection": "Miller", "series": [ { "mapPolygons": { "states": { "hover": { "properties": { "fill": "#67b7dc" } } } }, "heatRules": { "0": { "min": "#a82626", "max": "#AAAA00" } }, "data": { "0": { "id": "US", "value": 3461.37 }, "1": { "id": "DE", "value": 2858.09 }, "2": { "id": "NO", "value": 3418.87 }, "3": { "id": "ES", "value": 3522.46 } } } ], "zoomControl": { "slider": { "height": 100 } }, "titles": { "0": { "fontSize": 20 } }, "homeZoomLevel": 1 }
问题:
如果你在上面的代码中看到 heatRules 属性,它是一个数组,在转换后它被转换为 0 的对象,同样,如果你看到 data 属性,它会做同样的事情,如果你看到 Titles 属性,它也会做同样的事情。
我使用下面的链接代码来删除空对象和空对象:
Why lodash converts my array into object?
输入数据:
{
"projection": "Miller",
"series": [
{
"mapPolygons": {
"states": {
"hover": {
"properties": {
"fill": "#67b7dc",
"size": ""
}
}
}
},
"heatRules": [
{
"min": "#a82626",
"max": "#AAAA00",
"fill": null
}
],
"data": [
{
"id": "US",
"value": 3461.37
},
{
"id": "DE",
"value": 2858.09
},
{
"id": "NO",
"value": 3418.87
},
{
"id": "ES",
"value": 3522.46
}
]
}
],
"zoomControl": {
"slider": {
"height": 100
}
},
"titles": [
{
"fontSize": 20,
"fontColor": ""
}
],
"homeZoomLevel": 1
}
输出数据:
{
"projection": "Miller",
"series": [
{
"mapPolygons": {
"states": {
"hover": {
"properties": {
"fill": "#67b7dc"
}
}
}
},
"heatRules": [
{
"min": "#a82626",
"max": "#AAAA00"
}
],
"data": [
{
"id": "US",
"value": 3461.37
},
{
"id": "DE",
"value": 2858.09
},
{
"id": "NO",
"value": 3418.87
},
{
"id": "ES",
"value": 3522.46
}
]
}
],
"zoomControl": {
"slider": {
"height": 100
}
},
"titles": [
{
"fontSize": 20
}
],
"homeZoomLevel": 1
}
如果您看到上面的输出,它会从属性 -> 大小、heatRulues -> 填充中删除 null 和空白键,并从标题中删除 fontColor。
最佳答案
如果您的代码使用
typeof v === '对象'
对于数组
,它将返回true
。
要检查数组
,请使用
Array.isArray(t)
将array
视为object
并迭代键将导致您的问题。
递归但不处理数组的示例函数
function removeFalsies(obj) {
return _.transform(obj, function(o, v, k, l) {
if (Array.isArray(obj) {
for (let arrItem of obj) {
removeFalsies(arrItem);
}
return
}
// else not array...
})
}
关于javascript - 如何将json数组对象转换为json数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54359583/