我正在研究自定义 JsonSerializer 和 JsonDeserializer 我想将 json(整数)序列化为枚举并将枚举反序列化为整数
为此,我创建了一个接口,其中枚举有一个名为 fromValue 的函数,它应该采用反序列化的值并返回枚举:
interface EnumSerializationInterface {
val value: Int
fun fromValue(value: Int): EnumSerializationInterface?
}
示例枚举:
enum class TestDummyEnumTestEnum(override val value: Int):
EnumSerializationInterface {
ENUM1(1),
ENUM2(2);
override fun fromValue(value: Int): EnumSerializationInterface? {
for (enum in TestDummyEnumTestEnum.values()) {
if (enum.value == value) {
return enum
}
}
return null
}
}
我的序列化器工作但我在反序列化时遇到问题,我的序列化器和反序列化器:
class EnumDeserializer: JsonDeserializer<EnumSerializationInterface> {
override fun deserialize(json: JsonElement?, typeOfT: Type?, context: JsonDeserializationContext?): EnumSerializationInterface {
val value = json.asInt()
return typeOfT.fromValue(value)
/*THIS DOES NOT WORK*/
}
}
class EnumSerializer: JsonSerializer<EnumSerializationInterface> {
override fun serialize(src: EnumSerializationInterface?, typeOfSrc: Type?, context: JsonSerializationContext?): JsonElement {
return context!!.serialize(src!!.value)
}
}
我的问题是我无法从 typeOfT 获取“fromValue”函数。
有人知道如何获得实际的 typeOfT 吗?