我的代码有问题,下面的代码以某种方式抛出MismatchedInputException并出现输入终止错误:
JSON
{
"users": {
"user": {
"name": "TestUser",
"age": 32,
"description": "abc123"
}
}
}
UserWrapper.kt (应映射到JSON中的“ users”元素)
package p2
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
@JsonDeserialize(using = UserWrapperDeserializer::class)
class UserWrapper(val user: User?)
User.kt (应映射到JSON中的“ user”元素)
package p2
class User(val name: String, val age: Int, val special: String)
UserWrapperDeserializer.kt
package p2
import com.fasterxml.jackson.core.JsonParser
import com.fasterxml.jackson.databind.DeserializationContext
import com.fasterxml.jackson.databind.JsonDeserializer
import com.fasterxml.jackson.databind.JsonNode
class UserWrapperDeserializer : JsonDeserializer<UserWrapper>() {
override fun deserialize(p: JsonParser?, ctxt: DeserializationContext?): UserWrapper? {
val userNode = p?.codec?.readTree<JsonNode>(p)?.get("user")
return UserWrapper(ctxt?.readValue(userNode?.traverse(p.codec), User::class.java))
//Line above throws MismatchedInputException: Unexpected end-of-input
}
}
DeserializationContext.readValue()
不能正常工作吗?