我有一个基于json的REST Web服务使用: Jetty,Jersey,Jersey-JSON使用Jackson实现。泽西岛:无法反序列化ArrayList的实例字符串
我的一个方法收到一个Person实例,该实例有一个字段类型列表<字符串>。 即:
Public class Person {
List<String> names;
}
如果我有名字的数组调用它,一切工作正常!例如:
{ "names" : [ "Jhon", "Doe" ] }
但是,如果人只有一个名字,我的客户端创建一个单一的价值元素,如:
{ "names" : "Jhon" }
当我尝试用一个值来调用服务,我得到一个例外:
Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token
问:
我应该如何创建/配置我的Web服务,以便能够将数组字段作为单个元素发送给我时将其反序列化。
-
我已经阅读:
Jackson deserialization - with contained ArrayList<T>
和
How can I customize serialization of a list of JAXB objects to JSON?
,这是指最后的答案:
Jersey client can not deserializable json services - exception(can not deserialize instance)
Jaxb json missing brackets for one element array
但这些都不解决问题。
预先感谢您!
感谢队友,下面这行解决了我的问题:objectMapper = new ObjectMapper()。configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY,true); – mojsilo
@mojsilo你在哪里把 ** objectMapper = new ObjectMapper()。configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY,true); ** ? – Luke
我已经把它放在服务的构造函数 mapper.configure(\t \t org.codehaus.jackson.map.DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY,true); – mojsilo