Azure Logic App Transform_JSON_to_JSON动作JSON转换无效报错排查
错误根因
- 循环变量引用错误
Liquid模板中定义遍历语句为{% for transaction in content %},每轮循环的单条数据对象变量为transaction,但模板内读取属性时错误使用了根数组变量content,无法正确读取单条对象的属性。 - JSON数组元素缺少分隔符
遍历生成的多个JSON对象之间未添加逗号分隔符,导致输出内容不符合JSON语法规范,触发Newtonsoft.Json解析失败,和报错信息中After parsing a value an unexpected character was encountered: {的描述完全匹配。 - 无转义处理逻辑
直接拼接字符串生成JSON时,若属性值包含双引号、换行符等特殊字符,会直接破坏JSON结构。
修复后的Liquid模板
[ {% for transaction in content %} { "DeviceType": "{{ transaction.DeviceType }}", "Code": "{{ transaction.Code }}" }{% if forloop.last == false %},{% endif %} {% endfor %} ]
注:模板通过
forloop.last判断是否为数组最后一个元素,仅非末尾元素后追加逗号,保证JSON数组格式合法。如果需要避免特殊字符转义问题,可以使用DotLiquid内置的json过滤器直接输出对象:[ {% for transaction in content %} {{ transaction | pick: "DeviceType", "Code" | json }}{% if forloop.last == false %},{% endif %} {% endfor %} ]
输出验证
修复后针对你的输入生成的合法输出如下:
[ { "DeviceType": "Scanner", "Code": "ABC" } ]
内容的提问来源于stack exchange,提问作者Chris Halcrow
相关产品推荐
相关产品推荐

