在写 DiscordBot 引用的一个库中的 MessageEmebd 对象,想用 Redis 做消息队列,取出的时候反序列化失败
现在用的 GenericJackson2JsonRedisSerializer,其他序列化器也试过都不行
Could not read JSON: Cannot construct instance of `net.dv8tion.jda.api.entities.MessageEmbed$Field` (no Creators, like default construct, exist)
就是这个 MessageEmbed 里有个 public static class Field 没有无参构造器导致,也没办法去改他,目前我是直接用的 LinkedBlockingQueue 存,但是每次重启都要丢一些没消费完的数据,因为是自己写着玩的,所以凑活在用
1
billlee 2020-07-28 23:34:49 +08:00 1
换序列化方案,java.io.Serializable 就不依赖默认构造函数。kryo 也可以配置。
|
2
GM 2020-07-28 23:43:28 +08:00
大概率无解。
考虑自己反序列化成 JsonNode 后,一个一个属性设置值。 |
5
Roni 2021-08-18 16:22:51 +08:00 via Android
怎么做的最后
|
6
sola97 OP @Roni #5 [让 kryo 支持反序列化没有无参构造方法的类]( https://blog.csdn.net/iteye_7863/article/details/82325126)
|