Gson.fromJson()不解析Date字段

时间:2017-12-11 23:12:30

标签: java spring

我正在执行一个CommandLineRunner,它接受输入文件(json)并将其转换为dto以便进一步处理。

List<UserCreateDto> users = gson.fromJson(new InputStreamReader(new ClassPathResource("user.json").getInputStream()), new TypeToken<List<UserCreateDto>>() {
                }.getType());

json看起来像这样:

[
  {
    "username": "user2",
    "firstName": "userfirst2",
    "lastName": "userlast2",
    "password": "userpass2",
    "validFrom": "2017-01-01",
    "validTill": "2020-01-01"
  },
  {
    "username": "user1",
    "firstName": "userfirst",
    "lastName": "userlast",
    "password": "userpass",
    "validFrom": "2017-01-01",
    "validTill": "2020-01-01"
  }]

dto非常简单。只添加了一件事

@DateTimeFormatter(format = "yyyy-mm-dd")
private Date validFrom;

@DateTimeFormatter(format = "yyyy-mm-dd")
private Date validTill;

这里Date是java.util.Date

但是,当我运行该代码时,我不会在用户列表中获得validFromvalidTovalidFromvalidTill的所有值均为空。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

尝试在gson实例化本身

上设置日期格式
Gson gson = new GsonBuilder()
   .setDateFormat("yyyy-mm-dd").create();