2016-05-01 25 views
11

Tôi đang gặp vấn đề với việc tìm kiếm một mảng hoặc kích thước danh sách bằng cách sử dụng JsonPath của Stefan Goessner. Tôi đang sử dụng phiên bản json-path-2.0.0.Kích thước mảng sử dụng biểu thức jsonpath - Stefan Goessner JsonPath

biểu jsonpath tôi là $.orders.length và JSON trông giống như sau:

{ 
 
    "orders" : [ 
 
    ... 
 
    ] 
 
}

nó thất bại với các lỗi sau:

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

Và tôi đã cố gắng với $.orders.length() quá mà lại không thành công với lỗi bên dưới:

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

Vui lòng đề nghị tôi cách lấy độ dài của mảng bằng biểu thức JsonPath của Goessner.

[EDIT] Tiếp theo là cách tôi đang thu thập các cấu hình:

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

Trả lời

17

Dường như hỗ trợ mà trả lại length() của một mảng duy nhất là added in version 2.1.0 của thư viện jayway json-path.

Dựa trên một số thử nghiệm nhanh, biểu thức $.orders.length() dường như hoạt động với cả phiên bản 2.1.0 và phiên bản 2.2.0, vì vậy tôi nghĩ bạn chỉ cần nâng cấp phiên bản phụ thuộc của mình để khắc phục lỗi bạn đang thấy.

+1

Cảm ơn bạn đời, tôi đã nâng cấp lên phiên bản 2.2.0 và nó hoạt động hoàn hảo với phiên bản mới nhất –

Các vấn đề liên quan