【发布时间】:2022-01-24 17:45:07
【问题描述】:
在 Kotlin 中,我使用 jackson (fasterxml) 来解析端点响应 (JSON)。它看起来像这样:
{
...
steps: [
{
"status":200,
"id":"A",
"data":{
"score":"10"
}
},
{
"status":200,
"id":"B",
"data": {
"dateOfBirth":"10-09-1994",
"fullname": "Peter",
...
}
},
{
"status":200,
"id":"C",
"data": {
"dateOfBirth": {
"value": "10-03-1993"
},
...
}
},
]
...
}
我的代码如下所示:
...
response.readEntity(DocumentResponse::class.java)
...
@JsonIgnoreProperties(ignoreUnknown = true)
data class DocumentResponse @JsonCreator constructor(
@JsonProperty("steps")
val steps: List<StepResponse>
)
data class StepResponse @JsonCreator constructor(
@JsonProperty("status")
val status: String,
@JsonProperty("id")
val id: String,
@JsonProperty("data")
val data: Data?
)
@JsonIgnoreProperties(ignoreUnknown = true)
class Data @JsonCreator constructor(
@JsonProperty("dateOfBirth")
val dateOfBirth: String?,
@JsonProperty("fullName")
val fullName: String?,
@JsonProperty("dni")
val dni: String?,
...
)
问题是data 可以有多种类型,我只想在 id 为“B”时从 JSON 中获取该字段。当 JSON 被检索并读取时,会抛出错误,因为它读取 id 为“A”的 step 并且找不到 dateOfBirth,因此会抛出以下错误:
MistmatchedInputException:无法从 START_OBJECT 令牌中反序列化字符串实例...
如果字段data与JSON格式不匹配,是否可以忽略它?
我想阅读 JSON,但唯一与我相关的 data 是与特定 id 相关的那个!
【问题讨论】:
标签: json kotlin jackson fasterxml