我有这个JSON要反序列化:
"data": {
"type": 18,
"msg": "firstName,lastName,15"
"timestamp": 1551770400000
}
我想在我的模型中得到这些数据:
class DataDto(
type: String,
timestamp: Long,
msg: DataMsgDto?
) {
@JsonFormat(shape = JsonFormat.Shape.STRING)
@JsonPropertyOrder("firstName", "lastName", "age")
class DataMsgDto(
firstName: String,
lastName: String,
age: Long
)
}
我使用以下代码获取数据:
DataBuffer payload //this is what I get from server
val jsonNode = objectMapper.readTree(payload.toString(StandardCharsets.UTF_8))
objectMapper.treeToValue(jsonNode, DataDto::class.java)
但是这不起作用,因为在msg中我没有字段。那么,我该怎么做呢?
1条答案
按热度按时间ppcbkaq51#
您有一个包含逗号分隔值的JSON属性。JSON消息有效,并且可以由Jackson反序列化。
可以编写能够自动处理这种情况的自定义Jackson代码
但是解决这个问题最实际的方法不太可能是让Jackson理解
msg
,或者编写一个自定义的反序列化器。然后用Kotlin人工解码