4
私は最近、シリアライズの一部をJackson
からGson
に変更しました。ジャクソンが日付を連載していることを知りました。gsonを使用してDate to longをシリアル化する方法は?
しかし、GsonはデフォルトでDatesを文字列にシリアル化します。
Gsonを使用している場合、日付をlongにシリアル化するにはどうすればよいですか?ありがとう。
私は最近、シリアライズの一部をJackson
からGson
に変更しました。ジャクソンが日付を連載していることを知りました。gsonを使用してDate to longをシリアル化する方法は?
しかし、GsonはデフォルトでDatesを文字列にシリアル化します。
Gsonを使用している場合、日付をlongにシリアル化するにはどうすればよいですか?ありがとう。
第1のタイプのアダプタは、直列化解除を行い、第2の直列化アダプタは直列化を行います。
Gson gson = new GsonBuilder()
.registerTypeAdapter(Date.class, (JsonDeserializer<Date>) (json, typeOfT, context) -> new Date(json.getAsJsonPrimitive().getAsLong()))
.registerTypeAdapter(Date.class, (JsonSerializer<Date>) (date, type, jsonSerializationContext) -> new JsonPrimitive(date.getTime()))
.create();
使用:
String jsonString = gson.toJson(objectWithDate1);
ClassWithDate objectWithDate2 = gson.fromJson(jsonString, ClassWithDate.class);
assert objectWithDate1.equals(objectWithDate2);
(デシリアライゼーションに関する)
関連:http://stackoverflow.com/a/8960644/435605 –