Gson 提供了強大的自定義類型適配器功能,允許你為特定的數據類型編寫自定義的序列化和反序列化邏輯。這提供了很大的靈活性,可以處理一些 Gson 默認無法處理的情況。
要創建自定義類型適配器,你需要實現 JsonSerializer
和 JsonDeserializer
接口。JsonSerializer
用于定義對象的序列化邏輯,而 JsonDeserializer
用于定義對象的反序列化邏輯。
以下是一個簡單的示例,展示了如何為自定義類型創建適配器:
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import java.lang.reflect.Type;
public class CustomTypeAdapter implements JsonSerializer<CustomType>, JsonDeserializer<CustomType> {
@Override
public JsonElement serialize(CustomType src, Type typeOfSrc, JsonSerializationContext context) {
// 在這里實現序列化邏輯
// 例如,將 CustomType 對象轉換為 JsonElement
return new JsonPrimitive(src.toString());
}
@Override
public CustomType deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
// 在這里實現反序列化邏輯
// 例如,將 JsonElement 轉換為 CustomType 對象
if (json.isJsonObject()) {
CustomType customType = new CustomType();
// 從 JsonObject 中讀取數據并設置到 customType 對象中
return customType;
} else {
throw new JsonParseException("Expected a JsonObject but got " + json);
}
}
}
然后,你可以在 GsonBuilder 中注冊這個自定義類型適配器,以便在序列化和反序列化時使用它:
Gson gson = new GsonBuilder()
.registerTypeAdapter(CustomType.class, new CustomTypeAdapter())
.create();
現在,當你使用這個 Gson 實例進行序列化和反序列化操作時,它將使用你提供的自定義類型適配器來處理 CustomType
對象。
請注意,上述示例中的序列化和反序列化邏輯非常簡單,僅用于演示目的。在實際應用中,你可能需要根據具體需求實現更復雜的邏輯。