Azure APIM:将 JSON 响应转换为自定义 XML 格式

Posted

技术标签:

【中文标题】Azure APIM:将 JSON 响应转换为自定义 XML 格式【英文标题】:Azure APIM : Convert JSON Response to Customized XML Format 【发布时间】: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>

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

【问题讨论】:

【参考方案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。 好的,快点。我正在检查你的这个答案,但这对我不起作用,不确定我是否错过了什么***.com/questions/62649898/… set-body with template="liquid" 如果有效载荷不是递归的,也可以使用。 嗨,Vijay 仅供参考,我继续使用 template=liquid 并在正文上循环并构建了我想要的输出 XML。

以上是关于Azure APIM:将 JSON 响应转换为自定义 XML 格式的主要内容,如果未能解决你的问题,请参考以下文章

Azure APIM 在预检和从 axios 发出的 GET 请求时返回空响应正文,状态代码为 200

Azure 门户、开发人员门户和 Postman 之间的 APIM 响应标头不同

Azure APIM 睡眠或延迟策略

需要使用 Azure APIM set-body 策略修改响应

azure apim set-body 策略问题中的响应更改

使用 Azure APIM 策略处理表单数据