将JsonElement转化为指定类型对象,通过自定义gsonBuilder的反序列化方法:
JsonElement source = ...;
Gson gson = new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new JsonDeserializer<LocalDateTime>() {
@Override
public LocalDateTime deserialize(JsonElement json, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
String datetime = json.getAsJsonPrimitive().getAsString();
if (19 == datetime.length()) {
return LocalDateTime.parse(datetime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
} else if (23 == datetime.length()) {
return LocalDateTime.parse(datetime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
} else if (26 == datetime.length()) {
return LocalDateTime.parse(datetime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS"));
} else {
return null;
}
}}).create();
T targetObject = gson.fromJson(source, T.class);