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

Posted

技术标签:

【中文标题】使用 jsonpath 表达式的数组大小 - Stefan Goessner JsonPath【英文标题】:Array size using jsonpath expression - Stefan Goessner JsonPath 【发布时间】:2016-08-26 04:26:21 【问题描述】:

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

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


  "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】:
            JsonPath js = new JsonPath(response);
           List values = js.getList("Mention the path of the json here");
           int size= values.size();
           System.out.println(size);

【讨论】:

【参考方案2】:
List values = jsonpath.getList("orders");
System.out.println("Size of object : "+ values.size());

【讨论】:

请始终在代码中添加解释。它将提高答案的质量【参考方案3】:

似乎支持返回数组的length()的只有jayway json-path库的added in version 2.1.0。

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

【讨论】:

一个小修正,好像应该是$.orders.length(不带()),刚刚测试过,对我来说很好用

以上是关于使用 jsonpath 表达式的数组大小 - Stefan Goessner JsonPath的主要内容,如果未能解决你的问题,请参考以下文章

使用JSONPath

针对另一个表达式的JSONPath或JMESPath过滤

JsonPath —— JSON 解析神器

jsonpath原来这么简单!—Testfan打卡学测开1228

python之jsonpath模块

JSONPath中的表达式