sto impazzendo cercando di analizzare tale struttura JSON in Play Framework 2.2:Riproduci 2.2 Letture JSON con i combinatori: come gestire gli oggetti opzionali nidificati?
val jsonStr = """{ personFirstName: "FirstName",
personLastName: "LastName"
positionLat: null,
positionLon: null }"""
ho 2 classi case:
case class Position(val lat: Double, val lon: Double)
case class Person(firstName: String, lastName: String, p: Option[Position])
Come si può vedere, posizione non è obbligatoria nel caso in persona classe.
stavo cercando di ottenere un'istanza di persona che utilizza qualcosa di simile
implicit val reader = (
(__ \ 'personFirstName).read[String] ~
(__ \ 'personLastName).read[String] ~
((__ \ 'positionLat).read[Double] ~
(__ \ 'positionLon).read[Double])(Position)
)(Person)
ma presto mi sono reso conto non ho idea di come trattare con l'oggetto Option[Position]
: l'intenzione sarebbe quella di creare un'istanza di un Some(Position(lat,lon))
se entrambi 'lat' e 'lon' sono specificati e non null, altrimenti istanziare None
.
Come gestiresti questo?
Grazie per il tuo suggerimento, ma sfortunatamente non riesco a cambiare la struttura JSON, ecco perché non ho idea di come risolverlo. – Max