web-dev-qa-db-fra.com

Taille du tableau à l'aide de l'expression jsonpath - Stefan Goessner JsonPath

J'ai un problème avec la recherche d'une taille de tableau ou de liste à l'aide de JsonPath de Stefan Goessner. J'utilise la version json-path-2.0.0.

Mon expression jsonpath est $.orders.length Et JSON ressemble à ceci:

{
  "orders" : [
    ...
  ]
}

Son échec avec l'erreur suivante:

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

Et j'ai essayé avec $.orders.length() qui échoue à nouveau avec l'erreur ci-dessous:

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

Veuillez me suggérer comment obtenir la longueur du tableau à l'aide de l'expression JsonPath de Goessner.

[EDIT] Voici comment j'obtiens la configuration:

    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

Il semble que le support pour retourner la length() d'un tableau était seulement ajouté dans la version 2.1. de la bibliothèque jsonway json-path.

Sur la base de quelques tests rapides, l'expression $.orders.length() semble fonctionner à la fois avec la version 2.1.0 et la version 2.2.0, donc je pense que vous avez juste besoin de mettre à niveau votre version de dépendance afin de corriger l'erreur que vous voyez .

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