Mulesoft удалить объект из массива

Я хотел бы добавить в полезную нагрузку значения, которые получаются из внешнего http-вызова, но прежде чем я должен удалить объекты из массива, я попытался использовать функцию уменьшения, но результат оказался не таким, как я ожидал.

Полезная нагрузка выглядит так

[
    {
    "foo": "bar"
    },

    {
    "bar": "foo"
    }
]

значение, которое я получаю от http-вызова, представляет собой массив:

[
  {
    "ssrCode": "x1",
    "ssrdescription": "main client"
  },
  {
    "ssrCode": "x2",
    "ssrdescription": "authorized"
  }
]

конечным результатом должны быть только объекты в исходной полезной нагрузке.

[{
    "foo": "bar"
},
{
    "ssrCode": "x1",
    "ssrdescription": "main client"
},
{
    "ssrCode": "x2",
    "ssrdescription": "authorized"
} {
    "bar": "foo"
}
]

Приведенное ниже сокращение добавляет все те же объекты к одному и тому же {} вместо отдельных

payload reduce ((v, acc = {} ) -> acc ++ v)

{
  "ssrCode": "x1",
  "ssrdescription": "main client",
  "ssrCode": "x2",
  "ssrdescription": "authorized"
}

Кто-нибудь может мне с этим помочь?


person Ugo Guazelli    schedule 29.01.2020    source источник


Ответы (1)


Уго, ваш пост немного сбивает с толку.

Вы пытались просто объединить два массива вместе? Вы можете объединять массивы с помощью функции ++: например, payload ++ vars.httpCallResult, где переменная httpCallResult добавлена ​​здесь в целях иллюстрации.

Если вы предоставите более подробную информацию, я смогу добавить более подробную информацию со своей стороны.

person George    schedule 29.01.2020
comment
Привет, Джордж, спасибо, я попробовал, но это не работает, так как мне нужны результаты http без [] массива - person Ugo Guazelli; 29.01.2020
comment
Каков ваш ожидаемый результат? Я не вижу проблем с выводом команды reduce. - person oim; 29.01.2020
comment
Должно быть: [{foo: bar}, {ssrCode: x1, ssrdescription: main client}, {ssrCode: x2, ssrdescription: authorized} {bar: foo}] - person Ugo Guazelli; 29.01.2020
comment
Вы просто объединяете два массива, хотите ли вы, чтобы сэндвич с записями ssrCode между foo и bar? - person George; 29.01.2020
comment
Итак, вы хотите создать один объект из всех объектов в массиве, верно? Если это так, указанный вами reduce должен работать, пока все записи находятся в массиве. Другой способ сделать это (при условии, что httpCallResult определен, как и раньше) - это выполнить следующие {(payload ++ vars.httpCallResult)} - person George; 29.01.2020
comment
Нет, сокращение не работает, потому что вместо двух объектов оно сокращается до одного, а также ++ объединяет массив с объектом, поэтому я получу [{...}, [{...}, { ...} ] ] вместо того [ {...}, {...}, {...} ] - person Ugo Guazelli; 29.01.2020
comment
++ даст вам единственный массив, а не массив массивов. Если вы получаете массив массивов, вы делаете что-то не так в другом месте - person George; 29.01.2020
comment
Как упомянул Джордж, ++ соединит два массива. Таким образом, вы получите [{..}, {..}, {..}, {..}]. Однако, если вы ожидали, что это будет {{..}, {..}, {..}}, это недопустимый объект json, и я не думаю, что это возможно. - person oim; 30.01.2020