BizTalk 2013 - 解码JSON数组

问题描述 投票:3回答:2

使用BizTalk 2013,可以直接从JSON实体创建XSD架构,并在接收管道中使用JSON解码器将JSON消息转换为XML。

但是,当外部系统发送一个JSON实体数组时,用

array []语法

JSON解码器出现错误

XmlNodeConverter只能转换以对象开头的JSON

为了解决这个问题,我尝试使用JSON Schema Wizard和JSON数组数据的示例创建一个新的XSD架构 - 但是向导也无法识别该阵列。

如何将接收管道中的JSON解码器配置为解码对象数组?

c# biztalk biztalk-2013
2个回答
2
投票

一种可能的解决方案是创建自己的自定义管道组件,扩展JSON解码器。您可以使用它来通过将JSON数据修改为单个对象来准备JSON数据,或者将其分成多个对象并通过底层JSON解码器单独发送每个对象。

Microsoft发布了一个如何使用平面文件反汇编程序执行类似任务的示例,可以在BizTalk SDK附带的示例中找到

逻辑是相同的,因此您应该能够调整这些步骤来扩展JSON解码器。


0
投票

这里提供了一个有效的解决方案:Error in JSON Instance File.XmlNodeConverter can only convert JSON that begins with an object

但请注意,上述博文包含错误。正如在这个线程BizTalk - Json response from a rest service中所述,代码在资源文件中使用格式化字符串,该字符串应该是{{"{0}":{1}}},具有正确的双引号字符。

此外,第二步(Decode - Component(2):JSON Decoder)中的管道配置必须与Biztalk XML架构根节点名称和根节点名称空间完全匹配。第一步中的根节点名称可以是任何(我坚持使用“List”)

© www.soinside.com 2019 - 2024. All rights reserved.