在过去,我使用Jackson注解@JsonSerialize和@JsonDeserialize将java对象序列化为json,反之亦然:
public class Dummy {
@JsonSerialize(using = CustomNumberSerializer.class)
@JsonDeserialize(using = CustomNumberDeserializer.class)
public BigDecimal money;
@JsonSerialize(using = CustomDateSerializer.class)
@JsonDeserialize(using = CustomDateDeserializer.class)
public Date eventDate;
}
这完全符合我的要求。
现在我想知道是否有任何替代品,做同样的工作,但在调用数据库,如MongoDB和Redis。
例如:
BigDecimal money = new BigDecimal("1234.56");
Date eventDate = new Date();
Dummy dummy = new Dummy(money, eventDate);
将伪对象存储到DB中,我希望看到存储为String的变量
货币"1.234,56"
事件日期"2023年1月25日"
当我查询数据库时,我希望那些字符串被转换回它们的类型。
这样,我就可以为每个字段使用特定的模式。
任何关于这方面的文档/教程都将非常感谢。
1条答案
按热度按时间ars1skjm1#
在Springboot中,我们使用了RedisTemplate来连接运行在云中的redis示例。RedisTemplate在spring配置中被配置为一个自定义bean。在那里,你可以选择添加一个自定义的序列化器/反序列化器。我们使用了spring的GenericJackson 2 JsonRedisSerializer,这个序列化器在序列化字符串中包含对象的类型名称,这将在反序列化过程中有所帮助。
如果要在序列化和反序列化过程中添加任何自定义逻辑,可以扩展此类并重写相应的方法。
然后可以使用以下代码将自定义序列化程序添加到redis模板中。
对于Mongo DB,我相信可以使用定制转换器来应用类似的概念。
下面的示例代码展示了如何在spring中的mongo配置中配置定制转换器
请参阅以下连结以获取更多有关相同的资料