Ich verwende derzeit den Play-Framework-JSON-Parser, um eine JSON-Zeichenfolge in meinem Scala-Code zu analysieren.Dynamische JSON-Werte in Play Framework JSON
Ich habe die folgende Klasse:
case class Address(address: String,
gps: GPS,
country: String) {}
object Address {
implicit val reads: Reads[Address] = (
(JsPath \ "address").read[String] and
(JsPath \ "gps").read[GPS] and
(JsPath \ "country").read[String]
) (Address.apply _)
implicit val writes: Writes[Address] = (
(JsPath \ "address").write[String] and
(JsPath \ "gps").write[GPS] and
(JsPath \ "country").write[String]
) (unlift(Address.unapply))
}
die mit folgenden json gut funktioniert:
{
"address": "123 Fake Street",
"country": "USA",
"gps": { ... }
}
Das Problem ist, dass die json in einigen Situationen anstelle der GPS-Feld eine Zeichenfolge sein kann was nicht analysiert, dh
{
"address": "123 Fake Street",
"country": "USA",
"gps": "123abc"
}
Jetzt weiß ich, dass ich das GPS-Mitglied nicht b sein kann Ob eine Zeichenfolge oder ein GPS-Objekt, aber gibt es eine Möglichkeit, eine Option [GPS] zu sagen und nur einen Wert zu haben, wenn der JSON ein GPS-Objekt enthält?
nicht wirklich Understaning Ihre Frage, aber ich habe einen Kommentar auf Play-json und es kann Ihnen helfen, sich auf der Lösung Ihre Probleme: http://pedrorijo.com/blog/scala-json/ und http://pedrorijo.com/blog/scala-json-part2/ – pedrorijo91