BizTalk 2013 - 解码 JSON 数组
BizTalk 2013 - decode JSON array
使用 BizTalk 2013 可以直接从 JSON 实体创建 XSD 架构并在接收管道中使用 JSON 解码器来转换 JSON 消息进入 XML.
然而,当外部系统发送包含
的 JSON 实体数组时
array [] syntax
JSON 解码器因错误而失败
XmlNodeConverter can only convert JSON that begins with an object
为了解决这个问题,我尝试使用 JSON 架构向导和 JSON 数组数据示例创建一个新的 XSD 架构 - 但是该向导也可以无法识别数组。
如何配置接收管道中的 JSON 解码器来解码对象数组?
一种可能的解决方案是创建您自己的自定义管道组件来扩展 JSON 解码器。您可以使用它来准备 JSON 数据,方法是将其修改为单个对象,或者将其拆分为多个对象并通过底层 JSON 解码器单独发送每个对象。
Microsoft 发布了一个示例,说明如何使用平面文件反汇编器执行类似任务,可以在 BizTalk SDK 随附的示例中找到该示例
逻辑相同,因此您应该能够调整这些步骤来扩展 JSON 解码器。
此处提供了一个可行的解决方案:
Error in JSON Instance File.XmlNodeConverter can only convert JSON that begins with an object
不过请注意,上述博客 post 包含错误。如该线程 BizTalk 中所述 - Json response from a rest service
该代码在资源文件中使用格式字符串,该格式字符串应完全 {{"{0}":{1}}}
,并带有正确的双引号字符。
此外,第二步中的管道配置(解码 - 组件(2):JSON 解码器)必须与 Biztalk XML 架构根节点名称和根节点命名空间完全匹配。第一步中的根节点名称可以是任何名称(我坚持使用"List")
使用 BizTalk 2013 可以直接从 JSON 实体创建 XSD 架构并在接收管道中使用 JSON 解码器来转换 JSON 消息进入 XML.
然而,当外部系统发送包含
的 JSON 实体数组时array [] syntax
JSON 解码器因错误而失败
XmlNodeConverter can only convert JSON that begins with an object
为了解决这个问题,我尝试使用 JSON 架构向导和 JSON 数组数据示例创建一个新的 XSD 架构 - 但是该向导也可以无法识别数组。
如何配置接收管道中的 JSON 解码器来解码对象数组?
一种可能的解决方案是创建您自己的自定义管道组件来扩展 JSON 解码器。您可以使用它来准备 JSON 数据,方法是将其修改为单个对象,或者将其拆分为多个对象并通过底层 JSON 解码器单独发送每个对象。
Microsoft 发布了一个示例,说明如何使用平面文件反汇编器执行类似任务,可以在 BizTalk SDK 随附的示例中找到该示例
逻辑相同,因此您应该能够调整这些步骤来扩展 JSON 解码器。
此处提供了一个可行的解决方案: Error in JSON Instance File.XmlNodeConverter can only convert JSON that begins with an object
不过请注意,上述博客 post 包含错误。如该线程 BizTalk 中所述 - Json response from a rest service
该代码在资源文件中使用格式字符串,该格式字符串应完全 {{"{0}":{1}}}
,并带有正确的双引号字符。
此外,第二步中的管道配置(解码 - 组件(2):JSON 解码器)必须与 Biztalk XML 架构根节点名称和根节点命名空间完全匹配。第一步中的根节点名称可以是任何名称(我坚持使用"List")