3

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

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

数组 [] 语法

JSON解码器因错误而崩溃

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

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

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

4

2 回答 2

2

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

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

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

于 2015-02-09T23:36:17.717 回答
1

此处提供了一个可行的解决方案: JSON Instance File.XmlNodeConverter 中的错误只能转换以对象开头的 JSON

但请注意,上述博客文章包含错误。如本线程 BizTalk - Json 来自休息服务 的响应中所述,代码在资源文件中使用格式字符串,该字符串应为{{"{0}":{1}}},并带有正确的双引号字符。

此外,第二步(解码 - 组件(2):JSON 解码器)中的管道配置必须与 Biztalk XML 模式根节点名称和根节点命名空间完全匹配。第一步中的根节点名称可以是任何名称(我坚持使用“列表”)

于 2018-10-01T08:21:59.357 回答