Я уже десериализовал некоторое вложенное поле в Java в прошлом, следуя инструкциям из https://www.baeldung.com/jackson-nested-values (раздел 5):
@JsonProperty("brand")
private void unpackNested(Map<String,Object> brand) {
this.brandName = (String)brand.get("name");
Map<String,String> owner = (Map<String,String>)brand.get("owner");
this.ownerName = owner.get("name");
}
ownerName
- это поле в бине.
Теперь мне нужно сделать нечто подобное в Котлине, но я не доволен тем, что у меня есть.Предполагая, что у меня есть класс MyPojo
, который имеет поле createdAt
, но в JSON, который представляет его, поле вложено в атрибут metadata
:
data class MyPojo(var createdAt: LocalDateTime = LocalDateTime.MIN) {
@JsonProperty("metadata")
private fun unpackNested(metadata: Map<String, Any>) {
var createdAtAsString = metadata["createdAt"] as String
this.createdAt = LocalDateTime.parse(createdAtAsString,DateTimeFormatter.ISO_DATE_TIME)
}
}
Одна вещь, которую я надеваювот как то, что я вынужден сделать createdAt
a var
, а не val
.
Есть ли хитрость Котлина, чтобы улучшить ситуацию в целом?