Как удалить обьект без значения в JSON с помощью js?

Есть такой JSON

{"name":"Вася", "phone":"789654321","name":"", "phone":""}

Как мне удалить c помощью js пустой обьект в json ?

то есть если name и phone === null то его не должно быть в фале, а файл большой и именований много.


Ответы (1 шт):

Автор решения: Арман

Для начала уточнение

Существование такого объекта...

{ "name": "Вася", "phone": "789654321", "name": "", "phone": "" }

...в JSON невозможно. Так как, поскольку имена ключей повторяются, при разбое она станет таким...

{ name: "", phone: ""}

поэтому я думаю что вы имеете в виду такие объекты:

[
    { "name": "Вася", "phone": 789654321 },
    { "name": "", "phone": "" },
    { "name": "Женя", "phone": 111111111 }
]

Решение

А для таких объектов советую такое решение:
при получении объекта разбираем его из JSON, фильтруем и оставляем те объекты в котором name и phone не null и собирая обратно в JSON присваиваем переменной.

let list = `[
    { "name": "Вася", "phone": 789654321 },
    { "name": "", "phone": "" },
    { "name": "Женя", "phone": 111111111 }
]`;

list = JSON.stringify(JSON.parse(list).filter((item) => {
    if (!(item.name === null || item.phone === null))
        return item;
}));

Ещё момент

При разборе JSON где у ключа отсутствует значение мы получим не null, а пустую строку, поэтому правильнее будет так:

let list = `[
    { "name": "Вася", "phone": 789654321 },
    { "name": "", "phone": "" },
    { "name": "Женя", "phone": 111111111 }
]`;

list = JSON.stringify(JSON.parse(list).filter((item) => {
    if (!(item.name === `` || item.phone === `` ))
        return item;
}));
→ Ссылка