【问题标题】:BizTalk 2013 - decode JSON arrayBizTalk 2013 - 解码 JSON 数组
【发布时间】:2015-04-09 07:43:14
【问题描述】:

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

但是,当外部系统发送一个用

括起来的 JSON 实体数组时

数组 [] 语法

JSON 解码器出错

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

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

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

【问题讨论】:

  • 嗨,您是否设法做一个自定义管道组件来做到这一点?如果是这样,你能分享吗?谢谢!

标签: c# biztalk biztalk-2013


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 是的,我开始按照这些思路行事。谢谢你的回答。
    猜你喜欢
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2012-11-12
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    相关资源
    最近更新 更多