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 中添加空引号字符的主要内容,如果未能解决你的问题,请参考以下文章

Go 语言中的动态 JSON

编码信使JSON [复制]

BizTalk 2020 JSON 编码器生成对象的根数组,即以 [ ] 开头

如何解码json消息

如何让Jackson JSON生成的数据包含的中文以unicode方式编码

如何让Jackson JSON生成的数据包含的中文以unicode方式编码