Tôi có dịch vụ Web REST dựa trên json được triển khai thực hiện bằng cách sử dụng: Jetty, Jersey, Jersey-JSON sử dụng Jackson.Jersey: Không thể deserialize trường hợp của ArrayList ra khỏi chuỗi
Một trong các phương pháp của tôi nhận được cá thể Cá nhân có trường loại Danh sách < Chuỗi >. tức là:
Public class Person {
List<String> names;
}
Nếu tôi gọi nó với một loạt tên, tất cả đều hoạt động ok! ví dụ:
{ "names" : [ "Jhon", "Doe" ] }
Nhưng nếu người đó chỉ có một tên, khách hàng của tôi tạo ra một yếu tố giá trị duy nhất, ví dụ:
{ "names" : "Jhon" }
Khi tôi cố gắng gọi cho dịch vụ với một giá trị duy nhất, tôi nhận được một ngoại lệ:
Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token
Câu hỏi:
Làm thế nào tôi nên tạo/cấu hình dịch vụ web của tôi, để có thể deserialize mảng trường khi chúng được gửi đến tôi như là một phần tử duy nhất.
-
Tôi đã đọc:
Jackson deserialization - with contained ArrayList<T>
và
How can I customize serialization of a list of JAXB objects to JSON?
và điều này mà tham khảo câu trả lời cuối cùng:
Jersey client can not deserializable json services - exception(can not deserialize instance)
Jaxb json missing brackets for one element array
Nhưng không ai trong số đó khắc phục được sự cố.
Cảm ơn bạn trước!
Cảm ơn bạn đời, dòng sau đã giải quyết được vấn đề của tôi: objectMapper = new ObjectMapper(). Configure (DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); – mojsilo
@mojsilo bạn đang đặt ** objectMapper = new ObjectMapper(). Configure (DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); ** ? – Luke
Tôi đã đặt nó vào hàm tạo của dịch vụ mapper.configure (\t \t org.codehaus.jackson.map.DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); – mojsilo