Azure Logic App中@xml()函数JSON转XML输出序列化异常咨询
关于Azure Logic Apps中@xml()函数输出序列化的问题解答
我之前在处理Azure Logic Apps的JSON转XML需求时也踩过类似的坑,结合你提到的场景,给你梳理下关键要点:
@xml()函数的核心使用逻辑:
这个函数的作用是把原生JSON对象转换为对应的XML节点,但它不会自动解析字符串形式的JSON。如果你的输入是被引号包裹的JSON字符串,哪怕内容完全合法,函数也会把它当成普通文本处理,最终输出就是带转义字符的序列化内容,这应该就是你碰到的问题。排查你的前置函数块问题:
你提到有个前置函数块Add_Root_Element,重点要确认它的输出是原生JSON对象,而不是JSON字符串。举个实际的例子:- 如果
Add_Root_Element输出的是类似这样的原生JSON:
那么使用{ "Root": { "Field1": "Value1", "Field2": "Value2" } }@xml(body('Add_Root_Element'))就能得到正常的XML节点:<Root> <Field1>Value1</Field1> <Field2>Value2</Field2> </Root> - 但如果
Add_Root_Element输出的是字符串形式的JSON(比如用string()函数转换过):
那"{\"Root\": {\"Field1\": \"Value1\", \"Field2\": \"Value2\"}}"@xml()就会生成序列化的结果:<string>{"Root": {"Field1": "Value1", "Field2": "Value2"}}</string>
这种情况下,你需要先用
json()函数把字符串解析成原生JSON对象,再传给@xml(),也就是:@xml(json(body('Add_Root_Element')))- 如果
关联JSON转XML的完整场景优化:
如果要输出标准的XML文档,还可以给转换后的XML加上声明头,比如:@concat('<?xml version="1.0" encoding="UTF-8"?>', xml(body('Add_Root_Element')))
内容的提问来源于stack exchange,提问作者tinu73
相关产品推荐
相关产品推荐

