Sto tentando di deserializzare automaticamente l'oggetto json in una classe di scala utilizzando Lift-Json con una classe di coordinate all'interno utilizzata per memorizzare le informazioni di GeoJson.Deserializzazione elevatore-json polimerico in una classe composta
case class Request(name:String, geometry:Geometry)
sealed abstract class Geometry
case class Point(coordinates:(Double,Double)) extends Geometry
case class LineString(coordinates:List[Point]) extends Geometry
case class Polygon(coordinates:List[LineString]) extends Geometry
voglio deserializzare una stringa JSON come questo:
{
name:"test",
geometry:{
"type": "LineString",
"coordinates": [ [100.0, 0.0], [101.0, 1.0] ]
}
}
in una classe Richiesta caso del diritto di classe LineString runtime nel campo della geometria. Suppongo che dovrei usare un TypeHint ma come? È questo l'approccio corretto o dovrei creare tre diverse richieste (RequestPoint, RequestLineString e RequestPolygon)? Questo sarebbe il codice Scala per deserializzare:
val json = parse(message)
json.extract[Request]