【发布时间】:2014-01-11 14:20:54
【问题描述】:
我有这个 POJO:
public class JsonObj {
private String id;
private List<Location> location;
public String getId() {
return id;
}
public List<Location> getLocation() {
return location;
}
@JsonSetter("location")
public void setLocation(){
List<Location> list = new ArrayList<Location>();
if(location instanceof Location){
list.add((Location) location);
location = list;
}
}
}
json 输入中的“位置”对象可以是简单的位置实例或位置数组。当它只是一个实例时,我会收到此错误:
Could not read JSON: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token
我尝试实现自定义设置器,但没有成功。如何根据 json 输入映射位置或列表?
【问题讨论】:
-
不同的 JSON 意味着不同的 JSON DTO。如果你的 JSON 有一个
[],你需要使用List,如果它有一个{},你需要一个简单的对象。 -
同一个键有时是 [] 有时是 {},不幸的是我无法更改。
-
创建一个自定义反序列化程序,检查它是
[]还是{},并适当地创建一个实例并将其添加到List。 -
这似乎是解决方案。你能提供一些代码或文档来帮助我实现这个吗?
-
只需谷歌
jackson deserializer。类似this.
标签: java android json jackson rest-client