JMESPath是一个非常成熟的库,具有详细的规范和对多种语言的支持。
语法示例:
// Select a single item
people[1].firstName
// Select a slice of an array
people[0:5]
// Select all the first names
people[*].firstName
// Select all first names based on search term
people[?state=='VA'].firstName
// Count how many people are over 35
length(people[?age>`35`])
// Select only the name and age of people over 35
people[?age>`35`].{name: name, age: age}
// Join expressions together to sort and join elements into a string
people[?state == 'WA'].name | sort(@) | join(', ', @)
在文档中还有很多可以玩的实时示例。
JS库是19kb缩小的,所以可能比一些大,但考虑到广泛的功能,你可能会发现它是值得的。
其他选项
还有一些其他选项用于遍历/过滤JSON数据,以及一些语法示例,以帮助您比较...
-
捷思道
.automobiles{.maker === "Honda" && .year > 2009}.model
-
json:select() (更多灵感来自 CSS 选择器)
.automobiles .maker:val("Honda") .model
-
JSONPath(受XPath的启发)
$.automobiles[?(@.maker='Honda')].model