Ich werde verrückt versuchen, diese JSON Struktur im Play-Framework zu analysieren 2.2:Abspielen 2.2 JSON Liest mit Kombinatoren: Wie geht man mit geschachtelten optionalen Objekten um?
val jsonStr = """{ personFirstName: "FirstName",
personLastName: "LastName"
positionLat: null,
positionLon: null }"""
I 2 Fallklassen haben:
case class Position(val lat: Double, val lon: Double)
case class Person(firstName: String, lastName: String, p: Option[Position])
Wie Sie sehen können, ist Position obligatorisch nicht in Person Fall Klasse.
Ich habe versucht, eine Instanz von Person mit so etwas wie diese
implicit val reader = (
(__ \ 'personFirstName).read[String] ~
(__ \ 'personLastName).read[String] ~
((__ \ 'positionLat).read[Double] ~
(__ \ 'positionLon).read[Double])(Position)
)(Person)
zu bekommen, aber ich erkennen bald, ich habe keine Ahnung, wie man mit dem Option[Position]
Objekt behandeln: die Absicht, ein Some(Position(lat,lon))
wenn beide zu instanziiert wäre 'lat' und 'lon' sind angegeben und nicht null, andernfalls instanziieren Sie None
.
Wie würden Sie damit umgehen?
Danke für Ihren Tipp, aber leider kann ich die JSON-Struktur nicht ändern, deshalb habe ich keine Ahnung, wie ich das lösen soll. – Max