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 策略中使用<json-to-xml>
,响应将在<json-to-xml>
策略之后转换为如下所示的 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 set-body 策略修改响应