我有一个由Gson序列化/反序列化的枚举:
enum class PacketType {
NONE;
[SerializedName("request")]
REQUEST;
[SerializedName("response")]
RESPONSE;
[SerializedName("event")]
EVENT;
}
不幸的是,我注意到Gson忽略了SerializedName
注解,并对枚举值使用大写名称。我决定找出序列化不能按预期工作的原因,并发现Kotlin删除了枚举值的所有注解。我如何才能使这些注解出现在生成的字节码中?
3条答案
按热度按时间ldfqzlk81#
我看像是有窃听器。请向issue tracker报告。
作为一种临时解决方法,可以使用Java编写此类
ibps3vxo2#
这个问题现在已经解决了,你的代码现在可以在KotlinM9(0.9.66)中正常工作。如果你升级到那个版本,它会像你预期的那样工作。
例如:
应用构建器.gradle
顶级建筑.gradle
我通过创建一个枚举来确认这一点,该枚举在枚举名称和SerializedName名称之间没有关系,并且它按预期工作。
guicsvcw3#
如果您需要在Retrofit中使用enum作为@Query参数,则可以覆盖toString():