Gson Java能自定義序列化排除嗎

小樊
81
2024-10-22 18:02:15

是的,Gson Java 允許你自定義序列化和反序列化的過(guò)程,包括排除某些字段。你可以通過(guò)實(shí)現(xiàn) JsonSerializerJsonDeserializer 接口來(lái)完成這個(gè)任務(wù)。下面是一個(gè)簡(jiǎn)單的例子,展示了如何自定義序列化過(guò)程以排除某個(gè)字段:

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;

import java.lang.reflect.Type;

public class CustomSerializer implements JsonSerializer<MyClass> {

    @Override
    public JsonElement serialize(MyClass src, Type typeOfSrc, JsonSerializationContext context) {
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("field1", src.getField1());
        jsonObject.addProperty("field2", src.getField2());
        // 排除 field3
        return jsonObject;
    }
}

然后,你需要在創(chuàng)建 Gson 實(shí)例時(shí)注冊(cè)這個(gè)自定義序列化器:

Gson gson = new GsonBuilder()
        .registerTypeAdapter(MyClass.class, new CustomSerializer())
        .create();

現(xiàn)在,當(dāng)你使用這個(gè) Gson 實(shí)例進(jìn)行序列化時(shí),field3 將被排除在外:

MyClass myClass = new MyClass("value1", "value2", "value3");
String jsonString = gson.toJson(myClass);

這將輸出一個(gè)不包含 field3 的 JSON 字符串。

0