作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类说“人”。当我使用gson将其转换为json时,有时我想包含字段name
,但有时我不想包含它。 gson 中有没有可以用于这种目的的 api?
class Person {
int id;
String name;
}
最佳答案
一种方法是在Gson
中使用ExclusionStrategy
。它允许我们定义一个策略来告诉 GsonBuilder 是否使用自定义标准序列化类或字段。
代码片段
我使用变量 isNameIgnored
来启用/禁用字段 name
动态序列化。
boolean isNameIgnored = false;
ExclusionStrategy strategy = new ExclusionStrategy() {
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
@Override
public boolean shouldSkipField(FieldAttributes field) {
return isNameIgnored ? "name".equals(field.getName()) : false;
}
};
然后可以将该策略应用到GsonBuilder
中进行序列化,如下所示:
Gson gson = new GsonBuilder()
.addSerializationExclusionStrategy(strategy)
.create();
关于java - 如何在 Gson 中动态启用/禁用一个字段序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59483244/
我是一名优秀的程序员,十分优秀!