2016-05-01 24 views
11

Mam problem ze znalezieniem tablicy lub rozmiaru listy przy użyciu JsonPath Stefana Goessnera. Używam wersji json-path-2.0.0.Rozmiar tablicy przy użyciu wyrażenia jsonpath - Stefan Goessner JsonPath

Moja jsonpath wyrażenie jest $.orders.length i JSON wygląda mniej więcej tak:

{ 
 
    "orders" : [ 
 
    ... 
 
    ] 
 
}

Jego niepowodzeniem z powodu następującego błędu:

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

Próbowałem z $.orders.length() za które znowu nie działa z następującym błędem:

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

Proszę zasugerować, jak uzyskać długość tablicy za pomocą wyrażenia JsonPath Goessnera.

[EDIT] Poniżej jak ja uzyskania konfiguracji:

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); 

Odpowiedz

17

Wydaje się, że poparcie dla zwrotu length() tablicy był tylko added in version 2.1.0 biblioteki jayway json-path.

W oparciu o pewne szybkie testy, wyrażenie $.orders.length() wydaje się działać zarówno w wersji 2.1.0, jak i wersji 2.2.0, więc myślę, że wystarczy zaktualizować swoją wersję zależności, aby naprawić błąd, który widzisz.

+1

Dzięki mate, uaktualniłem do wersji 2.2.0 i działa idealnie z najnowszą wersją –