DeserializerContext.readValue()引发输入结束异常

时间:2020-07-07 09:09:27

标签: json kotlin jackson jackson-databind

我的代码有问题,下面的代码以某种方式抛出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()不能正常工作吗?

0 个答案:

没有答案