在Logic App或Dot Liquid中按创建日期排序JSON数组并获取最新项失败求助
解决Logic App中Liquid映射获取最新日期集合的问题
原代码的问题分析
你的Liquid代码存在几个关键错误,导致返回空值:
- 数组访问错误:
content是一个数组,没有直接的properties属性,你需要直接操作content数组中的每个元素,而非content.properties。 - 过滤器大小写错误:Liquid的排序过滤器是小写的
sort,不是大写的Sort。 - 循环变量引用错误:循环中你用
current.id访问属性,但current是整个排序后的数组,应该用循环变量item来访问单个元素的属性。
修正后的解决方案
方案1:直接获取最新的单个集合项
如果只需要按created日期最晚的那一项,可先排序再取数组第一个元素:
{% assign sortedItems = content | sort: "properties.created" | reverse %} {% assign latestItem = sortedItems[0].properties %} { "id": "{{ latestItem.id }}", "owner": "{{ latestItem.owner }}", "created": "{{ latestItem.created }}", "updated": "{{ latestItem.updated }}", "revision": "{{ latestItem.revision }}" }
方案2:按日期降序遍历所有项
如果需要遍历所有项并按从新到旧的顺序输出:
{% assign sortedItems = content | sort: "properties.created" | reverse %} [ {%- for item in sortedItems -%} { "id": "{{ item.properties.id }}", "owner": "{{ item.properties.owner }}", "created": "{{ item.properties.created }}", "updated": "{{ item.properties.updated }}", "revision": "{{ item.properties.revision }}" }{%- unless forloop.last -%},{%- endunless -%} {%- endfor -%} ]
代码解释
content | sort: "properties.created":对content数组中的每个元素,根据其properties.created字段进行升序排序(旧日期在前)。reverse:将排序后的数组反转,变成降序排列(最新日期在前)。sortedItems[0].properties:直接取反转后数组的第一个元素,也就是最新的集合项。- 循环中使用
item.properties.xxx访问每个元素的具体属性,确保正确获取值。
内容的提问来源于stack exchange,提问作者Mohit Jagtiani
相关产品推荐
相关产品推荐

