您好,我面临着地图序列化的问题,其中键是自定义类。
data class KeyClass(val id: Int, val name: String) {
fun toJSON() = "\"KeyClass\": {\"id\":$id,\"name\":\"$name\"}"
}
调用:
fun method(): Map<KeyClass, List<Something>> = ...
我的杰克逊序列化器ofc,我还将其添加为objectMapper中的模块:
class KeyClassSerializer : JsonSerializer<KeyClass>() {
override fun serialize(value: KeyClass, gen: JsonGenerator, serializers: SerializerProvider) {
gen.writeRawValue(value.toJSON())
}
}
class KeyClassSerializerModule : SimpleModule() {
init {
addKeySerializer(KeyClass::class.java, KeyClassSerializer())
}
}
我收到的JSON是:
"\"KeyClass\": {\"id\":1,\"name\":\"Thomas\"}" : [Something:...]
我的意思是map的值已正确序列化,但key却没有。
答案 0 :(得分:0)
我认为预期结果是:
"KeyClass": {
"id": 1,
"name":"Thomas"
} : [...]
但这不是有效的Json。您仍然可以执行以下操作:
{
"key" : {
"id": 1,
"name":"Thomas"
},
"value" : [...]
}