如何使用JSONPath获取过滤后JSON数组的最后一个元素ID
获取符合条件的最后一个ID的JSONPath解决方案
修正后的合法JSON(补充语法缺失,符合严格JSON规范)
{ "token": "xxxx", "files": [ { "id": 1, "deleted": true }, { "id": 2, "deleted": false }, { "id": 3, "deleted": false } ] }
解决方案
根据不同JSONPath实现的语法支持,提供两种可行表达式:
方案1:支持负索引的JSONPath实现(如Jayway、jsonpath-ng-ext)
直接过滤出未删除文件后,取数组最后一个元素的ID:
$..files[?(@.deleted==false)][-1].id
执行后返回结果:3
方案2:仅支持原始规范的JSONPath实现(不支持负索引)
通过length()函数计算过滤后ID数组的长度,取最后一个元素:
$..files[?(@.deleted==false)].id[length($..files[?(@.deleted==false)].id)-1]
执行后返回结果:3
注:优先选择方案1,大部分现代JSONPath解析工具都支持负索引写法,语法更简洁高效。
内容的提问来源于stack exchange,提问作者Ananda Bhavani Gedela
相关产品推荐
相关产品推荐

