如何使用JSONPath获取JSON数组的长度?

时间:2018-08-20 15:47:40

标签: json jsonpath

如果我有这样的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

1 个答案:

答案 0 :(得分:0)

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

$.length

应该返回如下内容:

[
    2
]

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

$..actor.length

这将返回如下内容:

[
    10
]

https://codebeautify.org/jsonpath-testerhttp://jsonpath.com/上进行了测试。