2016-05-01 35 views
11

Stefan Goessner'in JsonPath özelliğini kullanarak bir dizi veya liste boyutu bulmakta sorun yaşıyorum. Json-path-2.0.0 sürümünü kullanıyorum.jsonpath ifadesini kullanarak dizi büyüklüğü - Stefan Goessner JsonPath

Benim jsonpath ifadesi $.orders.length olduğunu ve JSON şöyle görünür:

{ 
 
    "orders" : [ 
 
    ... 
 
    ] 
 
}

Onun şu hatayla başarısız:

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

Ve $.orders.length() ile çalıştı hangi çok yine aşağıdaki hatayla başarısız oluyor:

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

nasıl Goessner en JsonPath ifade kullanarak dizinin uzunluğunu almak için beni önerin. Takip

[DÜZENLEME] Ben yapılandırmayı elde ediyorum nasıl:

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

cevap

17

Sadece jayway json yolu kütüphanenin added in version 2.1.0 olan bir dizinin length() döndürmek için bu desteği gibi görünüyor.

Bazı hızlı testlere dayanarak, $.orders.length() ifadesi hem 2.1.0 sürümü hem de sürüm 2.2.0 ile çalışacak gibi görünüyor, dolayısıyla gördüğünüz hatayı düzeltmek için bağımlılık sürümünüzü yükseltmeniz gerektiğini düşünüyorum.

+1

Teşekkürler, 2.2.0 sürümüne geçtim ve en son sürümle mükemmel çalışıyor. –