我有一个Java对象,它有一个java.util.Date字段。当我在Date对象上执行System.out.println()时,它会打印“2012-11-03”。然后,当我在Java对象上执行gson.toJson()时,我可以看到Date字段的Json表示是“2012年11月3日”。然后当我尝试使用gson.fromJson()从Json字符串创建另一个Java对象实例时,我得到以下异常:
com.google.gson.JsonSyntaxException: Nov 3, 2012
at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:81)
at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:66)
at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:41)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
at com.google.gson.Gson.fromJson(Gson.java:795)
at com.google.gson.Gson.fromJson(Gson.java:761)
at com.google.gson.Gson.fromJson(Gson.java:710)
at com.google.gson.Gson.fromJson(Gson.java:682)
为什么Gson不能处理自己的日期格式?
答案 0 :(得分:4)
使用gsonbuilder创建gson时必须使用setDateFormat。
像:
Gson gson = new GsonBuilder()。setDateFormat(“yyyy-MM-dd'T'HH:mm:ssZ”)。create();