如何在Logic Apps中按要求固定JSON节点与值的顺序?
在Azure Logic Apps中固定JSON键顺序的解决方法
Logic Apps默认会对JSON对象的键进行字母序重排,导致你在Compose中设置的顺序失效。以下是两种可靠的解决方法:
方法一:直接拼接JSON字符串
绕过Logic Apps的JSON序列化机制,手动按指定顺序拼接成JSON格式的字符串,输出顺序完全由你控制:
- 使用
Compose或Set variable操作,通过字符串拼接生成目标JSON。如果包含动态内容,将变量或动态值插入对应位置:
静态内容示例表达式:
含动态内容示例表达式:concat('{"@number":"1","Weight":2,"Dimensions":{"Length":1,"Width":2,"Height":3},"CustomerReferences":"Piece 1"}')concat( '{"@number":"', variables('pieceNumber'), '",', '"Weight":', variables('pieceWeight'), ',', '"Dimensions":{"Length":', variables('dimLength'), ',"Width":', variables('dimWidth'), ',"Height":', variables('dimHeight'), '},', '"CustomerReferences":"', variables('customerRef'), '"}' ) - 在后续HTTP请求中,将请求体类型设置为Raw,直接使用拼接好的字符串作为请求体发送。
方法二:使用Liquid模板控制顺序
利用Liquid模板的严格输出特性,精准控制JSON键的顺序:
- 创建Liquid模板文件,按需求顺序编写JSON结构:
{ "@number": "{{piece.number}}", "Weight": {{piece.weight}}, "Dimensions": { "Length": {{piece.dimensions.length}}, "Width": {{piece.dimensions.width}}, "Height": {{piece.dimensions.height}} }, "CustomerReferences": "{{piece.customerRef}}" } - 在Logic Apps中添加Transform JSON to JSON操作,关联你的Integration Account(需提前创建并上传Liquid模板),输入要转换的数据对象,选择上述Liquid模板。
- 操作输出的是严格按模板顺序生成的JSON字符串,直接作为HTTP请求体发送即可。
注意事项
- 无论使用哪种方法,都要确保最终发送的是字符串格式的JSON,而非Logic Apps自动解析的JSON对象,避免被二次序列化重排。
- 可以在发送前添加
Compose操作查看输出内容,确认键顺序符合要求。
内容的提问来源于stack exchange,提问作者Dishanth Varadaraj
相关产品推荐
相关产品推荐

