如何在 Java 中正确地将 dto 转换为 json?

How to properly convert dto to json in Java?

如何在 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 中的所有 属性 转换为与转换前相同的格式。如何做到这一点?

感谢您的帮助!

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

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

在 DTO 中将日期的数据类型用作字符串。它会解决问题