java - 使用 Gson 将 Java 8 LocalDate 序列化为 yyyy-mm-dd

标签 java gson

我正在使用 Java 8 和最新的 RELEASE Gson 的版本(通过 Maven) 。 如果我序列化 LocalDate 我得到这样的东西

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

我更喜欢的地方 "birthday": "1997-11-25" 。 Gson 是否还支持更简洁的开箱即用格式,或者我是否必须为 LocalDate 实现自定义序列化器?是?

(我尝试过 gsonBuilder.setDateFormat(DateFormat.SHORT) ,但这似乎没有什么区别。)

最佳答案

在进一步通知之前,我已经实现了一个自定义序列化器,如下所示:

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();

关于java - 使用 Gson 将 Java 8 LocalDate 序列化为 yyyy-mm-dd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57564139/

相关文章:

java - 使用 GSON 将扁平化 JSON 键反序列化为正确的对象

java - Gson反序列化集合

java - 如何更新 Realm Android 中的子对象

java - 使用 JSOUP 库在 Java 中读取 <br>、<ul>、<li>、<p> 等标签时如何保留它们的含义?

java - Gson.fromJson(String, Type) 反序列化时去除json字符串中的空格

java - Gson 反序列化 - 映射小写字段的嵌套类

java - 如何在 Gson 中转义斜线

java - GridLayout 中的单元格内容居中

Java,从字符串中获取类的包名

java - 打印正确的输出