相关疑难解决方法(0)

GSON de/serialize Object with Calendar to json w/Mongo Date and back

我有一些实体,其中包含一些日历属性。我想以将它们作为日期存储在 GSON 序列化 JSON 中的方式对其进行序列化,因为 Mongo 可以将 $date 存储为 new ISODate("..")。我们通常通过使用 ExclusionStrategy 忽略日历属性并手动设置它们来做到这一点,但一段时间后它变得非常可怕。

我发现了一些代码片段,可以通过自定义 TypeAdapter 使其工作。

这是我的 CalendarDateTypeAdapter。

public class CalendarDateTypeAdapter extends TypeAdapter<Calendar> implements JsonSerializer<Calendar>, JsonDeserializer<Calendar> {

private static final Gson gson = new GsonBuilder().create();
private static final TypeAdapter<Date> dateTypeAdapter = gson.getAdapter(Date.class);
private static final String MONGO_UTC_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";

public JsonElement serialize(Calendar src, Type type,
        JsonSerializationContext context) {
    if (src == null) {
        return null;
    } else {
        SimpleDateFormat format = new SimpleDateFormat(MONGO_UTC_FORMAT);
        JsonObject jo = new JsonObject();
        jo.addProperty("$date", format.format(src.getTime())); …
Run Code Online (Sandbox Code Playgroud)

serialization json calendar mongodb gson

2
推荐指数
1
解决办法
4401
查看次数

标签 统计

calendar ×1

gson ×1

json ×1

mongodb ×1

serialization ×1