JsonPath 数组 length() 返回键的数量而不是元素

问题描述

我有以下数组:

"books" : [ {
  "title" : "History","id":1

},{
  "title" : "The Robotics","id":2

},{
  "title" : "The World","id":3
} ]

而我的 JsonPath 符号是这样的: $.books[?(@.title == 'History')].length() 。我期望它返回 1(因为它匹配一本书),但它返回 2,这是第一个对象(匹配的)中的一些键。如何强制/更改它以返回元素的数量,而不是对象中的键?

我正在为 Java 使用 this 库。

解决方法

问题在于点 (.)。你只有一个,但你需要两个。这有效:

$..books[?(@.title == 'History')].length()