接口返回了一个自己封装实体类,将实体类转化成JSON传给了客户端。客户端用JackSon将其重新转化实体类。而这个实体类中有一个属性是另外一个实体类。
比如:
public class User(){
private Integer Id;
private String UserName;
private String PassWord;
.......
.......
(get,set)
}
public class myObj{
private String A;
private User B;
......
......
(get,set)
}
string json = XXXX; //这是接口给我们返回的
myObj data = objectMapper.readValue(json, myObj.class);
这个时候,JackSon的readvalue()方法并不会将这个属性(User)转成POJO,而且会报错。
这是因为,关于User对象的Json字符串会被JackSon转成LinkHashMap类型,而myObj没有LinkHashMap这个类型的属性,所以自然会报错了。
怎么解决,我有一个容易想到的解决方法;把myObj类的User属性换成Object属性,这样就不会报错了。
public class myObj{
private String A;
private Object B;
......
......
(get,set)
}
然后,如果想使用B的时候将Object再转换成User。 当然,没有强转的方法。可以使用jackson来转:
User user= objectMapper.convertValue(data.getB(),User.class);
这样就OK了。