是否有相当于 XQuery/XPath 的 JSON?[已关闭]

2022-08-30 00:38:51

在复杂的 JSON 数组和哈希中搜索项目时,例如:

[
    { "id": 1, "name": "One", "objects": [
        { "id": 1, "name": "Response 1", "objects": [
            // etc.
        }]
    }
]

是否有某种查询语言可用于查找项目?in [0].objects where id = 3


答案 1

是的,它被称为JSONPath

它也被集成到DOJO中。


答案 2

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