我需要在创建json字符串时动态包含字段。
目前,我可以使用gson.toJson()
函数获取包含所有字段的json字符串。但在我的项目中,我可能需要在创建json字符串时避免使用字段。任何人都可以建议一种方法吗?
目前我有一个课程如下:
class XXX {
int a;
int b;
int c;
}
我用
Gson gson_obd =new Gson();
String Json_final= gson_obd.toJson(new XXX());
获取完整的json字符串。但是如何在创建json字符串时避免使用字段b
?
答案 0 :(得分:1)
您可以添加排除策略并将其注册到Gson解析器中的序列化过程。
class MyExclusionStrategy implements ExclusionStrategy {
@Override
public boolean shouldSkipField(FieldAttributes f) {
//skip all b fields from the XXX class
return f.getName().equals("b") && f.getDeclaringClass() == XXX.class;
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
}
和
String json =
new GsonBuilder().addSerializationExclusionStrategy(new MyExclusionStrategy())
.setPrettyPrinting()
.create()
.toJson(new XXX());
输出:
{
"a": 0,
"c": 0
}
我添加&& f.getDeclaringClass() == XXX.class;
以确保您只跳过&#34; b&#34;来自XXX
类的字段。如果XXX
包含Foo
个实例,则该实例为&#34; b&#34;字段,它不会被跳过。