首页 > 解决方案 > 如何使用 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

标签: jsonjsonpath

解决方案


您可以使用如下.length()函数从第一个示例中获取数组的长度:

$.length

那应该返回如下内容:

[
    2
]

至于第二个示例,您可以使用常规点符号 ( ) 访问任何数组键,并在您希望获取其长度的节点键上$.node1.node2.node3调用该函数。length()例如,如果您想获取 actor 数组中的值的数量,您可以执行以下操作:

$..actor.length

这将返回如下内容:

[
    10
]

在https://codebeautify.org/jsonpath-testerhttp://jsonpath.com/上测试。

您可以在jsonpath github repo中找到更多功能。


推荐阅读