Gson 的自訂JSON 反序列化器
當接收具有自訂結構的JSON 資料時,Gson 的預設反序列化過程可能不夠。在這種情況下,需要自訂反序列化器。
考慮以下表示使用者的Java 類別:
public class User { int id; String name; Timestamp updateDate; }
以及表示使用者清單的JSON 結構:
[{"id":1,"name":"Jonas","update_date":"1300962900226"}, {"id":5,"name":"Test","date_date":"1304782298024"}]
要將此JSON 反序列化為User 實例,可以使用自訂反序列化器定義:
import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonParseException; import java.lang.reflect.Type; import java.sql.Timestamp; public class UserDeserializer implements JsonDeserializer<User> { @Override public User deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { long time = json.getAsJsonPrimitive().getAsLong(); return new User( json.get("id").getAsInt(), json.get("name").getAsString(), new Timestamp(time)); } }
此反序列化器將JSON 解析為 User 實例,同時考慮指定的欄位名稱和自訂時間戳解析。
要將此反序列化器套用至 Gson 實例,請使用registerTypeAdapter 方法:
GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.registerTypeAdapter(User.class, new UserDeserializer()); Gson gson = gsonBuilder.create();
現在,可以使用修改後的 JSON 反序列化為 User 實例清單Gson 實例。
以上是如何為 Gson 建立自訂 JSON 反序列化器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!