Объект JSON игнорировать null

Я новичок в MuleSoft и DataWeave, и я пытаюсь создать объект JSON только с ненулевыми значениями из другого объекта JSON.

Скажем, это мой массив JSON:

{
    str1 : "String 1",
    str2 : "String 2",
    str3 : null,
    str4 : "String 4",
}

Я хочу сделать копию этого массива JSON, но без str3, поэтому результат должен выглядеть так:

{
    str1 : "String 1",
    str2 : "String 2",
    str4 : "String 4",
}

Кто-нибудь может мне с этим помочь? или, по крайней мере, привести меня к решениям?

С Уважением


person Arès    schedule 30.07.2020    source источник
comment
Это не массив JSON, это объект JSON. И в ключах отсутствуют кавычки.   -  person aled    schedule 30.07.2020


Ответы (3)


Вот еще один способ:

%dw 2.0
output application/json
var o = {
    str1 : "String 1",
    str2 : "String 2",
    str3 : null,
    str4 : "String 4",
}
---
o filterObject $ != null

Вот документация по filterObject.

Выбери тот, который тебе нравится :)

person George    schedule 30.07.2020

Есть 2 возможных подхода:

Использование свойства writer skipNullOn, как указано здесь

output application/json skipNullOn="everywhere"
---
payload

Программно с условием if (это для отображения поля за полем)

var b = null
---
{
    a: 1,
    (b: b) if b != null,
    c: 3
}
person Jorge Garcia    schedule 30.07.2020

Для объекта вы можете преобразовать все атрибуты, которые не равны нулю:

%dw 2.0
output application/json
---
payload mapObject (($$): $ ) if (!($ == null))
person aled    schedule 30.07.2020