【发布时间】:2015-10-02 15:45:54
【问题描述】:
我已经序列化,然后尝试使用 jacksons 库反序列化空数组
ObjectMapper mapper = new ObjectMapper();
mapper.enableDefaultTyping(DefaultTyping.OBJECT_AND_NON_CONCRETE, JsonTypeInfo.As.PROPERTY);
List<Integer> original = new ArrayList<Integer>();
Writer w = new StringWriter();
mapper.writeValue(w, original);
String encoded = w.toString();
Object decoded = mapper.readValue(encoded, Object.class); // THIS LINE THROWS
但最后一行失败并出现错误:
org.codehaus.jackson.map.JsonMappingException: Unexpected token (END_ARRAY), expected VALUE_STRING: need JSON String that contains type id (for subtype of java.lang.Object)
但是当我使用enableDefaultTyping 函数删除行时,一切正常。
是我使用这个库错误还是库错误?
【问题讨论】:
-
试一试 Object decoded = encoded != null ? mapper.readValue(encoded, Object.class); : "{}";
-
@PradeepSekar 你在说什么? readValue 抛出异常,因为它无法解码字符串“[]”
标签: java json serialization jackson deserialization