我尝试使用Gson进行序列化/反序列化。我不想考虑超类(抽象的),问题是我没有访问超类代码的权限。
我试过使用ExclusionStrategy
,但不起作用。
private class SuperClassExclusionStrategy implements ExclusionStrategy {
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return clazz.equals(SuperClass.class);
}
@Override
public boolean shouldSkipField(FieldAttributes field) {
return false;
}
}
我该如何解决这个问题?
编辑:
我需要忽略超类中的字段,这是因为我收到以下错误:MyClass declares multiple JSON fields named
。我无法更改冲突的字段名。
解决方案:
采用以下策略解决:
private static class SuperClassExclusionStrategy implements ExclusionStrategy {
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
public boolean shouldSkipField(FieldAttributes field) {
return field.getDeclaringClass().equals(MySuperClass.class) && field.getName()
.equals("id");
}
}
2条答案
按热度按时间46scxncf1#
从Gson documentation
根据特定类别类型排除字段和对象:
ctehm74n2#
另一种方法是:
然后只显式公开要公开的字段。