как сделать так, чтобы квадратные скобки [] окружали содержимое узла? - PullRequest
0 голосов
/ 03 апреля 2019

Как вы гарантируете, что преобразование для определенного поля всегда будет внутри массива?

Моя карта преобразует полезную нагрузку XML в другую полезную нагрузку XML.

Field1 --> use
Field2 --> system
Field3 --> value

Вот схема "правой" стороны, с identifier в качестве родительского узла:

enter image description here

После преобразования,XML-результат:

<ns0:identifier>
    <ns0:use>a</ns0:use>
    <ns0:system>b</ns0:system>
    <ns0:value>c</ns0:value>
</ns0:identifier>

Если я преобразую это в json:

{
  identifier: {"use":"a", "system":"b", "value":"c"}
}

Тем не менее, мне нужен результат, чтобы содержимое identifier было заключено внутримассив, []:

{
  identifier: [{"use":"a", "system":"b", "value":"c"}]
}

Как мне гарантировать, что эта полезная нагрузка всегда будет внутри массива?

За этот ресурс :

enter image description here

Я пробовал это решение;однако изменение мин / макс на 1, похоже, не имело никакого значения в выводе:

enter image description here

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

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

Допустим, вывернуть ваш результат обратно в переменную с именем res.

res = {identifier: {"use":"a", "system":"b", "value":"c"}};

Затем вы можете использовать такой код, чтобы убедиться, что это то, что вам нужно:

let res = {
  identifier: {
    "use": "a",
    "system": "b",
    "value":"c"
  }
};

console.log(res);
console.log('---------------------------');
if(!Array.isArray(res.identifier)) {
  res.identifier = [res.identifier];
}

console.log(res);
1 голос
/ 03 апреля 2019

Для BizTalk Server 2013 R2 и выше:

Установите Макс. Происходит * (Неограничено)

Для BizTalk Server 2013 и ниже с использованием JSON.Net в компоненте конвейера:

Необходимо добавить атрибут json: Array к элементу на схеме XML, чтобы сериализатор JSON всегда рассматривал объект как массив.

Единственное значение, которое нам соответствует true: json: Array = 'true'

Подробности здесь: Преобразование XML в JSON и принудительный массив

...