gpt4 book ai didi

java - 根据 GSON 中的值从序列化中排除某些字段

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:34 48 4
gpt4 key购买 nike

我将 GSON 用于我的序列化目的,我没有找到一种方法从基于字段值的 Gson 提供的 ExclusionStrategy 类的序列化中排除某些字段,因为它只支持顶级类或基于字段属性的排除.字段属性不包括该字段的值。所以我该怎么做?

最佳答案

实现此目的的方法是为相关类创建自定义序列化程序。在允许 Gson 以默认方式创建 JSON 对象后,根据其值删除要排除的属性。

public class SerializerForMyClass implements JsonSerializer<MyClass> {  

@Override
public JsonElement serialize(MyClass obj, Type type, JsonSerializationContext jsc) {
Gson gson = new Gson();
JsonObject jObj = (JsonObject)gson.toJsonTree(obj);
if(obj.getMyProperty()==0){
jObj.remove("myProperty");
}
return jObj;
}
}

并在 Gson 对象中注册新的序列化程序,您在此类的应用程序中用于序列化。

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(MyClass.class, new SerializerForMyClass());
Gson gson=gsonBuilder.create();
gson.toJson(myObjectOfTypeMyClass);

关于java - 根据 GSON 中的值从序列化中排除某些字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13120354/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com