如何反序列化空数组/列表?

时间:2011-08-25 12:42:22

标签: json jackson

我有一个属性

@JsonProperty
private Map<String, String> parameters = new HashMap<String, String>();

当我尝试通过调用objectMapper.readValue(...)进行反序列化时,一切正常,直到JSON中的参数字段为空,即

"parameters":[]

我得到了这个例外......

org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.HashMap out of START_ARRAY token

如何处理空列表?不,我对JSON的控制没有任何控制权。

感谢。

2 个答案:

答案 0 :(得分:4)

您只能从HashMap中获得{},而不是[](尽管如此,您应该可以获得ArrayList

答案 1 :(得分:0)

正如克里斯所说,你的JSON是错误的。

但是如果你真的需要支持这个,你可以(并且需要)创建一个自定义反序列化器,并为已声明的Map类型注册 - 自定义反序列化器然后可以接受数组(至少是空数组,如果那些只是种类可以遇到的。)