Ath*_*rva 7 java serialization json gson
我使用GSON进行序列化,我没有找到根据Gson基于字段值提供的ExclusionStrategy类从序列化中排除某些字段的方法,因为它只支持基于排名的顶级类或字段属性.字段属性不包括该字段的值.所以我该怎么做?
Ath*_*rva 22
实现此目的的方法是为相关类创建自定义序列化程序.允许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;
}
}
Run Code Online (Sandbox Code Playgroud)
并在Gson对象中注册新的序列化程序,用于在此类的应用程序中进行序列化.
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(MyClass.class, new SerializerForMyClass());
Gson gson=gsonBuilder.create();
gson.toJson(myObjectOfTypeMyClass);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8457 次 |
最近记录: |