2016-08-28 3 views
4

Java 8を使用していて、最新のRELEASEバージョン(Maven経由)はGsonです。 私はLocalDateをシリアル化した場合、私は私が"birthday": "1997-11-25"好ましいだろう。このGysonでJava 8 LocalDateをyyyy-mm-ddとしてシリアライズ

"birthday": { 
     "year": 1997, 
     "month": 11, 
     "day": 25 
} 

のようなものを取得します。 Gsonは、より簡潔な形式をすぐにサポートしていますか、またはLocalDateのカスタムシリアライザを実装する必要がありますか?

(。私はgsonBuilder.setDateFormat(DateFormat.SHORT)を試してみたが、それは違いを確認していないようです)

+0

http://stackoverflow.com/questions/6873020/gson-date-format正しい方向を指す必要があります。 –

+0

ほとんどの場合、[カスタムTypeAdapter](http://www.javadoc.io/doc/com.google.code.gson/gson/2.7)をインストールする必要があります。 –

+2

'com.google。 gson.internal.bind'では 'LocalDate'(gson 2.7)の型アダプタはありません。 –

答えて

9

追って通知があるまで、私はそうのようなカスタム・シリアライザを実装している:

class LocalDateAdapter implements JsonSerializer<LocalDate> { 

    public JsonElement serialize(LocalDate date, Type typeOfSrc, JsonSerializationContext context) { 
     return new JsonPrimitive(date.format(DateTimeFormatter.ISO_LOCAL_DATE)); // "yyyy-mm-dd" 
    } 
} 

それをインストールすることができます例えばように:

Gson gson = new GsonBuilder() 
     .setPrettyPrinting() 
     .registerTypeAdapter(LocalDate.class, new LocalDateAdapter()) 
     .create(); 
関連する問題