科特林 |杰克逊注解 |如何修复超出 START_ARRAY 令牌错误
Posted
技术标签:
【中文标题】科特林 |杰克逊注解 |如何修复超出 START_ARRAY 令牌错误【英文标题】:Kotlin | Jackson annotation | How to fix Out of START_ARRAY token Error 【发布时间】:2021-09-17 06:54:00 【问题描述】:谁能说我哪里做错了。我有这样的json
[
"id": "1",
"name": "ff",
"surname": "ggg",
"cap": "10000"
,
"id": "1",
"name": "aaa",
"surname": "hhh",
"cap": "22222"
,
"id": "1",
"name": "rrr",
"surname": "hhhhhdr",
"cap": "33333"
,
"id": "1",
"name": "hhh",
"surname": "qqqqq",
"cap": "44444"
]
我解析到这个类。
data class ResponseList(
val capList: List<Response>?
)
data class Response(
@JsonProperty("id")
val id: String,
@JsonProperty("name")
val name: String,
@JsonProperty("surname")
val surname: String,
@JsonProperty("cap")
val cap: String
)
当我尝试解析它时,列表始终为空,如果我尝试对其进行测试,则会出现以下错误:
无法从数组值反序列化 com.myapp.ResponseList 类型的值(令牌 JsonToken.START_ARRAY
)
【问题讨论】:
如果你解析为ResponseList
,它会期望你的JSON类似于 capList: [id: "", name: "", surname: "", cap: ""]
。
【参考方案1】:
只需要类响应,如下所示:
fun test()
val jsonStr = "your json str"
val mapper = ObjectMapper()
val lendReco: List<Response> =
mapper.readValue(jsonStr, object : TypeReference<List<Response?>?>() )
data class Response(
@JsonProperty("id")
val id: String,
@JsonProperty("name")
val name: String,
@JsonProperty("surname")
val surname: String,
@JsonProperty("cap")
val cap: String
)
【讨论】:
以上是关于科特林 |杰克逊注解 |如何修复超出 START_ARRAY 令牌错误的主要内容,如果未能解决你的问题,请参考以下文章
Android Room 库错误:找不到字段的设置器。 (科特林)
如果 MutableList 为空,如何更改 TextView 的可见性? (安卓/科特林)