当前位置: 首页 > 面试题库 >

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

郎魁
2023-03-14
问题内容

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

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

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

(我已经尝试过了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 8和GSON的最新版本(通过Maven)。如果序列化,将得到如下内容 我更喜欢。Gson是否也支持更简洁的开箱即用格式,还是必须为s实现自定义序列化器? (我尝试过,但似乎没有什么作用。)

  • 问题内容: 我有一个格式。我希望它采用以下格式 以下是我尝试进行此转换的示例: 我得到的输出仍然不是格式。 请让我知道如何格式化从到 问题答案: 是自Unix纪元(1970年1月1日UTC:00:00)以来的毫秒数的容器。 它没有格式的概念。 输出…

  • 问题内容: 好吧,我正在使用a进行详细说明,因为我从数据库中获取了一个对象,并且从同一对象中获得了一个变量“ fecha”(日期),因此我得到了a ,因此formatt以毫秒为单位,但是我不想出现毫秒。因此,我需要将我从数据库中收到的日期格式化为没有毫秒的新日期。 这是对象Factura: 在映射到数据库的xml中,我具有该变量“ fecha”的代码: 在数据库中,该列为。 当我从数据库中获取一个

  • 我正在尝试将一个对象从JSON数据反序列化为C类(我使用的是Newtonsoft JSON.NET)。数据以字符串值形式包含日期,如2013年12月9日,格式为年月日。 如果我调用JsonConvert。反序列化对象 是否可以配置JsonConvert以获得正确格式的日期?

  • 我想将日期从07/02/2019转换为2019年7月07日。我的输入值是07/02/2019我想与目标值2019年7月07日进行比较.....请帮助我... public static void main(string[]args)引发ParseException{ 输出:Mon Jul 01 00:00:00 IST 2019这不是我的期望值

  • 问题内容: 我从服务器获取以下字符串: 我尝试将其解析为一个对象 但是当我定义“ startDate”作为日期时 我从gson回来的收藏集是空的 当我将“ startDate”定义为字符串时 集合已正确填充。 我想更改其日期格式。这就是为什么我更喜欢将其保存为Date对象。 我努力了 但是Gson无法将服务器的字符串解析为 。没有添加任何内容,并且保持空白。 我究竟做错了什么? 问题答案: 仅设置