如何在 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 中将日期的数据类型用作字符串。它会解决问题
如何在 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 中将日期的数据类型用作字符串。它会解决问题