如何验证Logic Apps输出?解决JSON格式不符及循环数据验证问题
问题分析与解决方案
错误输出的核心问题
你当前得到的Logic Apps输出存在两个关键问题:
value字段是字符串形式的JSON:它被双引号包裹且内部引号做了转义,并非直接的JSON数组,导致无法被正常解析为数组结构。- JSON结构违反语法规范:字符串内的单个对象重复了
startdate和enddate键(JSON不允许同一对象内存在重复键,解析器会忽略或覆盖重复项),而你需要的是两个独立对象组成的数组。
错误输出示例:
{"name": "endData","value": "[ {\"startdate\" : \"01/01/2014\",\"enddate\" : \"31/01/2014\",\"startdate\" : \"01/02/2014\",\"enddate\" : \"28/02/2014\"} ]"}
修正Logic Apps循环配置
要生成预期的正确输出,需调整For Each循环的逻辑:
- 外部循环遍历数据源的行(
items('rows')),内部为每一行单独生成一个包含startdate和enddate的独立对象。 - 循环结束后,直接将所有生成的对象收集为数组,赋值给
value字段,不要将数组转成字符串。
输出验证方法
方法1:手动验证
从Logic Apps运行历史中复制value字段的内容,先去掉外层双引号和内部转义符,再用jsonlint验证:
- 提取并修正后的内容应为:
[{"startdate" : "01/01/2014","enddate" : "31/01/2014"},{"startdate" : "01/02/2014","enddate" : "28/02/2014"}] - 将这段内容粘贴到jsonlint中,即可验证格式是否合规。
方法2:在Logic Apps内添加验证动作
添加Parse JSON动作,使用以下预期Schema来自动验证输出:
{ "type": "array", "items": { "type": "object", "properties": { "startdate": { "type": "string" }, "enddate": { "type": "string" } }, "required": ["startdate", "enddate"] } }
如果Parse JSON动作报错,说明循环生成的输出格式不符合要求,需重新调整循环逻辑。
最终正确输出示例
调整后的标准输出JSON应为:
{"name": "endData","value": [{"startdate" : "01/01/2014","enddate" : "31/01/2014"},{"startdate" : "01/02/2014","enddate" : "28/02/2014"}]}
内容的提问来源于stack exchange,提问作者Vijayamathankumar
相关产品推荐
相关产品推荐

