3 回答

TA贡献1826条经验 获得超6个赞
我依靠Google JSON通过使用The feature处理此类问题
从序列化和反序列化中排除字段
假设A类和B类之间的双向关系如下
public class A implements Serializable {
private B b;
}
和B
public class B implements Serializable {
private A a;
}
现在使用GsonBuilder来获取自定义Gson对象,如下所示(注意setExclusionStrategies方法)
Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() {
public boolean shouldSkipClass(Class<?> clazz) {
return (clazz == B.class);
}
/**
* Custom field exclusion goes here
*/
public boolean shouldSkipField(FieldAttributes f) {
return false;
}
})
/**
* Use serializeNulls method if you want To serialize null values
* By default, Gson does not serialize null values
*/
.serializeNulls()
.create();
现在我们的通函
A a = new A();
B b = new B();
a.setB(b);
b.setA(a);
String json = gson.toJson(a);
System.out.println(json);
看看GsonBuilder类
添加回答
举报