Gson是一個Java庫,可以將Java對象轉換為Json,也可以將Json轉換回Java對象。在使用Gson進行Json轉對象時,經常會遇到需要將Json中的日期時間格式轉換為Java Date類型的情況。下面是一個簡單的例子:
String json = "{\"name\":\"張三\",\"birthday\":\"2021-10-01 12:00:00\"}"; Gson gson = new Gson(); User user = gson.fromJson(json, User.class);
在上面的例子中,我們需要將Json字符串中的birthday字段轉換為Java Date類型。Gson提供了TypeAdapter接口,可以自定義類型轉換器來處理這種情況。
public class DateTypeAdapter implements JsonDeserializer, JsonSerializer { private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { try { return dateFormat.parse(json.getAsString()); } catch (ParseException e) { throw new JsonParseException(e); } } @Override public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) { return new JsonPrimitive(dateFormat.format(src)); } }
上面的代碼中,我們定義了一個DateTypeAdapter類,實現了JsonDeserializer和JsonSerializer接口。其中,deserialize方法用于將Json中的字符串轉換為Java Date類型,serialize方法用于將Java Date類型轉換為Json字符串。
接下來,我們需要將DateTypeAdapter注冊到Gson中:
GsonBuilder builder = new GsonBuilder(); builder.registerTypeAdapter(Date.class, new DateTypeAdapter()); Gson gson = builder.create(); User user = gson.fromJson(json, User.class);
在上面的代碼中,我們使用GsonBuilder創建了一個builder實例,并將DateTypeAdapter注冊到了其中。最后,我們通過builder.create()方法創建了Gson對象,并使用它將Json字符串轉換為Java對象。
使用上述方法可以簡單地實現Json字符串中日期時間格式與Java Date類型之間的轉換。