Mam usługę WWW REST opartą na json zaimplementowaną za pomocą: Jetty, Jersey, Jersey-JSON z wykorzystaniem Jackson.Jersey: Nie można deserializować instancji ArrayList z ciągu
Jedna z moich metod otrzymuje instancję Osoba, która ma pole typu Lista < Ciąg >. tj .:
Public class Person {
List<String> names;
}
Jeśli ja to nazywam z tablicą nazw, wszystko działa ok! np:
{ "names" : [ "Jhon", "Doe" ] }
Ale jeśli człowiek ma tylko jedno imię, mój klient tworzy element wartość pojedynczej, np
{ "names" : "Jhon" }
Kiedy próbuję wywołać usługę z pojedynczej wartości, otrzymuję wyjątek:
Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token
Pytanie:
W jaki sposób powinienem utworzyć/skonfigurować moją usługę sieciową, aby móc deserializować pole tablicy, kiedy są one wysyłane do mnie jako pojedynczy element.
-
ja już przeczytać:
Jackson deserialization - with contained ArrayList<T>
i
How can I customize serialization of a list of JAXB objects to JSON?
i to, że odnoszą się ostatnią odpowiedź:
Jersey client can not deserializable json services - exception(can not deserialize instance)
Jaxb json missing brackets for one element array
Ale żaden z tych rozwiązać problem.
Z góry dziękuję!
Dzięki mate, następująca linia rozwiązała mój problem: objectMapper = new ObjectMapper(). Configure (DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); – mojsilo
@mojsilo gdzie wstawiasz ** objectMapper = new ObjectMapper(). Configure (DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); ** ? – Luke
Umieściłem go w konstruktorze usługi mapper.configure (\t \t org.codehaus.jackson.map.DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); – mojsilo