【发布时间】:2018-06-20 14:35:24
【问题描述】:
我正在开发自定义 JsonSerializer 和 JsonDeserializer 我想将json(ints)序列化为枚举并将枚举反序列化为int
我为此创建了一个接口,其中枚举有一个名为 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 吗?
【问题讨论】: