使用 jsonpath 表达式的数组大小 - Stefan Goessner JsonPath

2022-09-01 10:23:03

我在使用Stefan Goessner的JsonPath查找数组或列表大小时遇到问题。我使用的是版本 json-path-2.0.0。

我的 jsonpath 表达式是和 JSON 看起来像这样:$.orders.length

{
  "orders" : [
    ...
  ]
}

它失败,并出现以下错误:

com.jayway.jsonpath.PathNotFoundException: Property ['length'] not found in path $['orders']

我也尝试过,这再次失败,并出现以下错误:$.orders.length()

com.jayway.jsonpath.PathNotFoundException: Property ['length()'] not found in path $['orders']

请建议我如何使用Goessner的JsonPath表达式获取数组的长度。

[编辑]以下是我如何获取配置:

    com.jayway.jsonpath.Configuration conf = com.jayway.jsonpath.Configuration.defaultConfiguration().addOptions(Option.DEFAULT_PATH_LEAF_TO_NULL);
    DocumentContext documentContext = JsonPath.using(conf).parse(orderJson);
    Object val = documentContext.read(jsonPathExpression);

答案 1

似乎只在 jayway json-path 库的 2.1.0 版本中添加了对返回数组的支持。length()

基于一些快速测试,该表达式似乎适用于版本2.1.0和版本2.2.0,因此我认为您只需要升级依赖项版本即可修复您看到的错误。$.orders.length()


答案 2
            JsonPath js = new JsonPath(response);
           List values = js.getList("Mention the path of the json here");
           int size= values.size();
           System.out.println(size);