我正在使用Spring WebSocket。我有Message
的DTO
@AllArgsConstructor
@Data
public class MessageDto {
private ObjectId messageId;
private ObjectId chatId;
}
当我将此DTO作为响应发送时,DTO中的ObjectId
字段Map如下:
如何像62790c02513ad11442eec6d7
一样将ObjectId
字段Map到String
?
1条答案
按热度按时间cqoc49vn1#
Spring使用
Jackson
将对象Map到JSON
,因此Map对象中的ObjectId
字段的正确方法是配置Jackson
序列化程序。创建序列化程序类:
然后在DTO类中指定序列化程序:
总之,
MessageDto
对象的ObjectId
字段将像JSON
中的字符串一样被序列化当然,将
JSON
反序列化为一个对象是有问题的。有JsonDeserializer<>
和@JsonDeserialize
来解决这个问题。但是在那里(MapObjectId
类字段)反序列化器是无用的,因为ObjectId
已经有了一个构造函数,它接收一个String
参数,所以Jackson
会使用它。