У меня есть 2 формата JSON (example_json1, example_json2) и простой класс Address для анализа JSON с использованием Scala.Я могу получить JSON с типом поля String или StringWrapper.
Как я могу их обобщить?
Теперь этот код может преобразовать только "example_json1" в объект Address.
object AdressJson {
val example_json1 =
"""{
"value":
{
"string":"MY ADDRESS"
}
}"""
val example_json2 =
"""{
"value":"STREET"
}"""
}
object Main {
val mapper = new ObjectMapper() with ScalaObjectMapper
mapper.registerModule(DefaultScalaModule)
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
def main(args: Array[String]): Unit = {
val parsedJson = mapper.readValue(AdressJson.example_json1, classOf[Address])
println(parsedJson)
}
}
case class Address(value: StringWrapper)
case class StringWrapper(string: String)
Я хочу иметь такой код, который мог бы работать с обоими этими типами (и, возможно, даже с большим количеством типов).
Могу ли я создать универсальный код для этого без использования instanceOf какв Java?Каковы подходы в Scala для решения этой проблемы?Могу ли я создать десериализатор для него?