4

java.util.Date フィールドを持つ Java オブジェクトがあります。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 が独自の日付形式を処理できないのはなぜですか?

4

1 に答える 1

4

gsonbuilder で gson を作成する場合は、setDateFormat を使用する必要があります。

お気に入り:

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create();

于 2013-03-26T09:42:40.873 に答える