Logic App中Liquid模板如何将JSON对象映射为字符串输出
Logic App Liquid映射:将JSON对象转为字符串输出的问题
问题说明
在Logic App的Liquid映射中,尝试将输入的JSON对象作为字符串映射到输出的body字段时,发现body字段为空;使用json过滤器后仍未解决,需要实现将JSON对象序列化为转义后的字符串作为body值的输出格式。
输入示例
[ { "firstName": "FirstName1", "lastName": "LastName1" }, { "firstName": "FirstName2", "lastName": "LastName2" }, { "firstName": "FirstName3", "lastName": "LastName3" } ]
尝试过的Liquid代码
[ {%- for rec in content -%} { "BrokerProperties": { "ContentType": "application/json", "SessionId": "1" }, "body": "{{ rec }}" } {% if forloop.last == false %},{% endif %} {%- endfor -%} ]
期望输出
[ { "BrokerProperties": { "ContentType": "application/json", "SessionId": "1" }, "body": "{\"firstName\": \"FirstName1\",\"lastName\": \"LastName1\"}" }, { "BrokerProperties": { "ContentType": "application/json", "SessionId": "1" }, "body": "{\"firstName\": \"FirstName2\",\"lastName\": \"LastName2\"}" }, { "BrokerProperties": { "ContentType": "application/json", "SessionId": "1" }, "body": "{\"firstName\": \"FirstName3\",\"lastName\": \"LastName3\"}" } ]
解决方案
正确的Liquid代码
[ {%- for rec in content -%} { "BrokerProperties": { "ContentType": "application/json", "SessionId": "1" }, "body": "{{ rec | json | replace: '"', '\\"' }}" } {% if forloop.last == false %},{% endif %} {%- endfor -%} ]
代码说明
rec | json:将单个JSON对象序列化为标准JSON字符串;replace: '"', '\\"':把JSON字符串中的双引号转义为\",避免和外层JSON的双引号冲突,确保输出的JSON格式合法;- 保留原有的循环和逗号处理逻辑,保证输出是合法的JSON数组。
也可以使用capture捕获JSON字符串后再转义,效果一致:
[ {%- for rec in content -%} {% capture rec_json %}{{ rec | json }}{% endcapture %} { "BrokerProperties": { "ContentType": "application/json", "SessionId": "1" }, "body": "{{ rec_json | escape }}" } {% if forloop.last == false %},{% endif %} {%- endfor -%} ]
内容的提问来源于stack exchange,提问作者devguy852401
相关产品推荐
相关产品推荐

