1 回答

TA贡献1776条经验 获得超12个赞
嗯……这很有趣,因为transient关键字应该可以解决问题。但是..这只是一个常见用例的捷径。如果处理序列化过程的库或代码忽略它,它可能不起作用。
有一篇很好的文章,涵盖了 JAVA 中的序列化主题(阅读本文)。简而言之:您可以自定义ExclusionStrategy以向您的班级添加专用行为
代码亮点:
ExclusionStrategy strategy = new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes field) {
if (field.getDeclaringClass() == MyClass.class && field.getName().equals("other")) {
return true;
}
if (field.getDeclaringClass() == MySubClass.class && field.getName().equals("otherVerboseInfo")) {
return true;
}
return false;
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
};
Gson gson = new GsonBuilder()
.addSerializationExclusionStrategy(strategy)
.create();
String jsonString = gson.toJson(source);
assertEquals(expectedResult, jsonString);
是的..这可能对您的问题来说有点矫枉过正,但它应该适用于所有用例
添加回答
举报