【问题标题】:How to properly convert dto to json in Java? [duplicate]如何在 Java 中正确地将 dto 转换为 json? [复制]
【发布时间】:2021-12-10 21:42:41
【问题描述】:

如何在 Java 中正确地将 dto 转换为 json?我使用ObjectMapper 如下所示:

        ObjectDto dto;
        byte[] json = new byte[0];

        dto = service.getDto(someId);

        ObjectMapper mapper = new ObjectMapper();
        json = mapper.writeValueAsBytes(dto);

问题在于格式化date 字段。在 Dto 中,我的日期格式为:2021-09-27T12:06:27.990Z,但在将此 dto 转换为以字节为单位的 json 之后,我看到我的 date 被拆分为具有以下许多属性的对象:

"date":{
         "year":2021,
         "month":"OCTOBER",
         "nano":528000000,
         "monthValue":10,
         "dayOfMonth":25,
         "hour":13,
         "minute":14,
         "second":58,
         "dayOfYear":298,
         "dayOfWeek":"MONDAY",
         "chronology":{
            "id":"ISO",
            "calendarType":"iso8601"
         }
      },

在使用ObjectMapper 后,我想将Dto 的所有属性都以与转换前相同的格式。如何做到这一点?

感谢您的帮助!

【问题讨论】:

  • 你的 DTO 中creationTime 的数据类型是什么?
  • 这是我的date,我粘贴了错误的json
  • 我正在修复它.....
  • LocalDateTime
  • 这能回答你的问题吗? Java 8 LocalDate Jackson format(特别是this answer.)

标签: java json object objectmapper


【解决方案1】:

您应该注册一个自定义序列化程序

public class ItemSerializer extends StdSerializer<Item> {
  ....
}

ObjectMapper mapper = new ObjectMapper();

SimpleModule module = new SimpleModule();
module.addSerializer(Item.class, new ItemSerializer());
mapper.registerModule(module);

在此处查看完整说明:https://www.baeldung.com/jackson-custom-serialization

【讨论】:

    【解决方案2】:

    在 DTO 中使用 Date 的 DataType 作为字符串。会解决问题的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 2023-03-10
      相关资源
      最近更新 更多