JSON 编码器生成 JSON 消息在 BizTalk 2016 中添加空引号字符
Posted
技术标签:
【中文标题】JSON 编码器生成 JSON 消息在 BizTalk 2016 中添加空引号字符【英文标题】:JSON encoder generating JSON message adding empty quotes characters in BizTalk 2016 【发布时间】:2019-12-10 12:02:13 【问题描述】:我的 XML 消息
<ns0:rootNode xmlns:ns0="http://project.Schemas.rootNode">
<bitmap></bitmap>
</ns0:rootNode>
json编码器转换后,下面是
"bitmap": ""
但我希望采用以下格式
"bitmap": null
由于某种原因,BizTalk 2013 R2 能够按预期进行转换,但 BizTalk 2016 无法做到这一点。
我尝试过将位图转换为字符串、布尔值和日期时间数据类型,但无法做到。
是否有任何建议或自定义管道是我唯一的一个选择?
【问题讨论】:
【参考方案1】:因此,他们根据我的博文BizTalk 2013 R2 known bugs, issues & quirks 修复了 BizTalk 2013 R2 中存在的一个问题。
问题:BizTalk JSON 编码器将 XML 中的空白更改为 JSON 中的 null详细信息:如果您使用 JSON 编码器并且有一个为空的元素,它在 JSON 有效负载中变为 null。更多详细信息:REST JSON Christmas Puzzle解决方法:使用 BRE Pipeline 并执行替换字符串 @消息正文中的 987654325@ 带有字符串
": ""
(初始概念来自 REST JSON Christmas Puzzle – Work around)。注意:上述解决方法有一个意想不到的副作用,它会导致添加 BOM .这可能会导致某些系统出现问题。
如果您想拥有它null
,也许您需要在架构中的该字段上将 xsd nillable 属性设置为 true,并在有效负载中设置 xsi:nil="true"
。
除此之外,您必须执行与我们必须为 BizTalk 2013 R2 实施的修复相反的操作。
【讨论】:
【参考方案2】:这是 Biztalk 2016 JSON 编码器的当前行为
输入 XML:
<test>
<a></a>
<b>test</b>
<c>NULL</c>
<d/>
</test>
输出:
"test":
"a": "",
"b": "test",
"c": "NULL",
"d": null
为了生成json空值,元素应该是自闭标签形式
【讨论】:
以上是关于JSON 编码器生成 JSON 消息在 BizTalk 2016 中添加空引号字符的主要内容,如果未能解决你的问题,请参考以下文章
BizTalk 2020 JSON 编码器生成对象的根数组,即以 [ ] 开头