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);
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 .
List values = jsonpath.getList("orders");
System.out.println("Size of object : "+ values.size());