使用gson将复杂的Java对象转换为json。toJsonTree
我需要将java对象(称为org)转换为json格式。 对象(DTO)有点复杂,因为它包含同一类的对象列表,而这些对象又可以包含同一类的更多对象(递归构建)。当我把物体传给格森时。toJsonTree方法似乎失败了(没有任何错误),但该方法似乎不喜欢复杂对象)。如果我将第一个对象的对象列表设置为空,那么一切正常。我不能修改这个类,只能修改生成json的方法
JsonElement jsonUO = null;
jsonUO = gson.toJsonTree(org,OrgDTO.class);
jsonObject.add("ORG", jsonUO)
public class OrgDTO implements Serializable{
private String id;
......
private List sucesores;
public OrgDTO(){
this.sucesores = new ArrayList();
}
.....
}
# 1 楼答案
对于提问者来说可能有点晚了,但我会分享我的答案,以防其他人面临类似问题:
您需要创建一个执行json序列化的助手类。它应该实现JsonDeserializer:
然后,在尝试序列化该类型的任何对象之前,需要在gson中注册它: