javascript - 从 JSON 文档中删除未设置的元素
问题描述
我必须删除未知深度的 JSON 文档的空白元素。像这个:
{
"a": {
"a1": ""
},
"b": {
"b1": "",
"b2": {
"b21": "",
"b22": {
"b22z": "",
"b22x": ""
},
"b23": ""
},
"b3": ""
},
"c": "only non-empty field"
}
我认为最好的主意是使用 JSON.parse 来获取对象然后对其进行处理,所以我得到了这样的东西:
我在这篇文章中找到了这个功能,但它没有像我预期的那样工作:
function filter(obj) {
$.each(obj, function(key, value){
if (value === "" || value === null){
delete obj[key];
} else if (Object.prototype.toString.call(value) === '[object Object]') {
filter(value);
} else if ($.isArray(value)) {
$.each(value, function (k,v) { filter(v); });
}
});
}
用我的对象调用该函数后,我得到一个具有空属性的对象,我不想显示它:
我怎样才能修改上面的代码来得到这个?我已经尝试了我所知道的一切,我要疯了......
谢谢
解决方案
注释中的代码不起作用,因此我将在此处再次输入:
function removeEmptyEntries(object) {
let allEmpty = true;
for (let item in object) {
if (typeof object[item] == "object") {
if(removeEmptyEntries(object[item]))
{
delete object[item];
} else {
allEmpty = false;
}
} else if (object[item]=="") {
delete object[item]
} else {
allEmpty = false;
}
}
return allEmpty;
}
警告:这是从我的头顶上做的,所以它未经测试。
推荐阅读
- html - Outlook HTML - 没有自动空间的签名编辑
- python - 如何在 TensorFlow 中将信号与一维内核卷积?
- java - 使用 Comparable 接口对通用链表进行排序
- kubernetes - Kibana 未正确加载。检查服务器输出以获取更多信息
- swift - 如何在 Qt 应用程序中集成 Swift 代码
- angular - Angular 7 TypeError:无法读取专业版
- javascript - 将对象转换为文件并通过 Ajax 发送
- php - 如何使用 IV & TAG 在 PHP 中解密 aes-256-gcm
- rust - 无法读取通过 hyper::client::Client 发出 HTTP 请求的简单有效负载:不满足 trait bound `Body: Future`
- sql - 我们可以在 SQL 中做 PIVOT 表时添加两列吗