【问题标题】:Azure APIM : Convert JSON Response to Customized XML FormatAzure APIM:将 JSON 响应转换为自定义 XML 格式
【发布时间】:2021-06-21 18:35:30
【问题描述】:

我有一个需求,我想将 JSON 响应(一个对象数组)转换为自定义的 XML 格式,以便我现有的代码可以解析它。

我知道有一个名为 <json-to-xml /> 的 Azure 转换策略,但无法对其进行自定义。

示例 JSON 响应:

{
    "data":[
               {"a":1,"b":2},
               {"a":3,"b":4}
            ],
    "param2": "Success",
    "param3": "true"
 }

所需的 XML 格式:

<result>
 <sub-res>
  <res x="a" y=1>
  <res x="b" y=2>
 </sub-res>
 <sub-res>
  <res x="a" y=3>
  <res x="b" y=4>
 </sub-res>
</result>

我也尝试过使用液体模板,但没有成功。需要这方面的指导或指点。

【问题讨论】:

    标签: json azure azure-api-management liquid-template


    【解决方案1】:

    针对这个需求,我创建了一个响应{"data":[{"a":1,"b":2},{"a":3,"b":4}]}的api来模拟你的情况。

    然后我首先在 APIM 策略中使用&lt;json-to-xml&gt;,响应将在&lt;json-to-xml&gt; 策略之后转换为如下所示的 xml:

    <Document>
        <data>
            <a>1</a>
            <b>2</b>
        </data>
        <data>
            <a>3</a>
            <b>4</b>
        </data>
    </Document>
    

    之后,使用xslt将xml转换成你想要的。

    以下是我的 APIM 中的所有政策供您参考:

    APIM 的结果如你所愿:

    【讨论】:

    • 沉先生,谢谢您的回复。我会试试这个,让你知道。此外,我在您的方法中看到了对 XML 的附加转换,是否有任何机制可以直接将 JSON 转换为 XML,而不是执行 JSON -> XML -> 自定义 XML
    • @HarmandeepSinghKalsi 据我所知,也许我们也可以通过 xslt 直接将 json 转换为自定义 xml。但其实我xslt不擅长,所以我只是用它来将xml转换成customm xml。
    • 好的,快点。我正在检查你的这个答案,但这对我不起作用,不确定我是否错过了什么stackoverflow.com/questions/62649898/…
    • set-body with template="liquid" 如果有效载荷不是递归的,也可以使用。
    • 嗨,Vijay 仅供参考,我继续使用 template=liquid 并在正文上循环并构建了我想要的输出 XML。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 2021-07-02
    • 2021-09-22
    • 2011-07-04
    相关资源
    最近更新 更多