json - 如何使用 JSONPath 获取 JSON 数组的长度?
问题描述
如果我有这样的 JSON 文档
[
{
"number" : "650-462-9154",
"type" : "main"
},
{
"number" : "650-462-1252",
"type" : "fax"
}
]
我可以使用什么 JSONPath 来获取数组长度(即 2),而无需对任何属性值进行硬编码?
使用我拥有的工具,这里有一些他们给出的例子,这并不能帮助我弄清楚我需要什么价值。
[
{
"type": "add",
"id": "tt0484562",
"version": 1,
"lang": "en",
"fields": {
"title": "The Seeker: The Dark Is Rising",
"director": "Cunningham, David L.",
"genre": ["Adventure","Drama","Fantasy","Thriller"],
"actor": ["McShane, Ian","Eccleston, Christopher","Conroy, Frances",
"Crewson, Wendy","Ludwig, Alexander","Cosmo, James",
"Warner, Amelia","Hickey, John Benjamin","Piddock, Jim",
"Lockhart, Emma"]
}
},
{
"type": "delete",
"id": "tt0484575",
"link_ref": null,
"version": 2
}
]
$.[0].genre ---> 0
$.[0].fields.genre ---> 1
$.[0].fields.genre[*] ---> 4
$.[*].type ---> 2
$.[1].link_ref ---> 1
解决方案
您可以使用如下.length()
函数从第一个示例中获取数组的长度:
$.length
那应该返回如下内容:
[
2
]
至于第二个示例,您可以使用常规点符号 ( ) 访问任何数组键,并在您希望获取其长度的节点键上$.node1.node2.node3
调用该函数。length()
例如,如果您想获取 actor 数组中的值的数量,您可以执行以下操作:
$..actor.length
这将返回如下内容:
[
10
]
在https://codebeautify.org/jsonpath-tester和http://jsonpath.com/上测试。
您可以在jsonpath github repo中找到更多功能。
推荐阅读
- database - 如何在数据库 b 树上执行带有组合子句的 SQL 操作
- python - 我应该将哪些模块用于现实生活中的对象检测
- css - 有没有办法在反应中延迟组件的渲染
- qt - 设置 QComboBox 的最小行高
- c# - 使用 DevExpress 创建区域
- spring-mvc - 带有下划线 (_) 和点 (.) 的 Spring MVC @PathVariable 被截断
- react-native - 从 react-native 中的最后一项删除水平线
- python - 找不到带有 IBM_DB 的 SQLAlchemy 引发错误驱动程序
- linux - 循环并打印和汇总列linux
- sql - SQL 输出格式为每个条目一行