如何确保特定字段的转换始终在数组内部?
我的地图正在将XML有效负载转换为另一个XML有效负载。
Field1 --> use
Field2 --> system
Field3 --> value
这是“右侧”架构,其中identifier
作为父节点:
转换后,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"}]
}
如何确保此有效载荷始终位于数组内部?
为此resource:
我已经尝试过这种解决方案;但是将最小值/最大值更改为1似乎对输出没有任何影响:
答案 0 :(得分:1)
对于BizTalk Server 2013 R2和更高版本:
将最大出现次数设置为*(无限制)
对于在管道组件中使用JSON.Net的BizTalk Server 2013及更低版本:
您必须将json:Array属性添加到Xml架构上的Element上,以便JSON序列化程序始终将对象视为Array。
我们唯一的值为true:json:Array ='true'
答案 1 :(得分:1)
如果您无法控制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);