从 JSON 文档中删除未设置的元素

我必须删除未知深度的 JSON 文档的空白元素。像这个:


{

    "a": {

        "a1": ""

    },

    "b": {

        "b1": "",

        "b2": {

            "b21": "",

            "b22": {

                "b22z": "",

                "b22x": ""

            },

            "b23": ""

        },

        "b3": ""

    },

    "c": "only non-empty field"

}


我认为最好的主意是使用 JSON.parse 来获取对象然后对其进行处理,所以我得到了这样的东西:

http://img4.mukewang.com/62c79ba600018da205140455.jpg

我在这篇文章中找到了这个功能,但它没有像我预期的那样工作:


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); });

        }

    });

}

用我的对象调用该函数后,我得到一个具有空属性的对象,我不想显示它:

http://img4.mukewang.com/62c79bb60001664a04730282.jpg

我怎样才能修改上面的代码来得到这个?我已经尝试了我所知道的一切,我要疯了......

蝴蝶刀刀
浏览 111回答 2
2回答

慕的地8271018

注释中的代码不起作用,因此我将在此处再次输入: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;}警告:这是从我的头顶上做的,所以它未经测试。

慕田峪7331174

这是你想要的那种东西吗?function remove(object) {    for (let item in object) {        if (typeof object[item] == "object") {            remove(object[item])        } else {            if (object[item]=="") {                delete object[item]            }        }    }    return object}const obj = {    "a": {        "a1": ""    },    "b": {        "b1": "",        "b2": {            "b21": "",            "b22": {                "b22z": "",                "b22x": ""            },            "b23": ""        },        "b3": ""    },    "c": "only non-empty field"}console.log(remove(obj))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript