在使用Java的Gson解析JSON時,經常會遇到日期亂碼的問題。這是因為Java日期類型在JSON中默認使用ISO8601格式表示,而Gson默認使用UTC時區來解析日期,會導致日期偏移。
// 示例JSON數據 { "name":"張三", "birthday":"2022-01-01T00:00:00Z" }
在解析上面的數據時,我們可能會得到錯誤的日期:
Gson gson = new Gson(); User user = gson.fromJson(json, User.class); // 錯誤的日期 System.out.println(user.getBirthday()); // 2021-12-31T16:00:00.000-08:00
如果要解決這個問題,我們需要通過GsonBuilder來自定義Gson實例的行為,將時區設置為本地時區,如下所示:
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX").create(); User user = gson.fromJson(json, User.class); // 正確的日期 System.out.println(user.getBirthday()); // 2022-01-01T00:00:00.000+08:00
以上就是解決Gson解析JSON日期亂碼的方法。