web-dev-qa-db-ja.com

jsonpath式を使用した配列サイズ-Stefan Goessner JsonPath

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式を使用して配列の長さを取得する方法を教えてください。

[EDIT]構成の取得方法は次のとおりです。

_    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);
_
17
Nagendra Varma

配列のlength()を返すためのサポートは、jayway json-pathライブラリの バージョン2.1.0で追加 のみであったようです。

いくつかの簡単なテストに基づいて、$.orders.length()式はバージョン2.1.0とバージョン2.2.0の両方で機能するようです。したがって、表示されているエラーを修正するには、依存関係バージョンをアップグレードする必要があると思います。

37
andersschuller
List values = jsonpath.getList("orders");
System.out.println("Size of object : "+ values.size());
0
Shibu