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中文网其他相关文章!