Я пытаюсь автоматически десериализовать объект json в класс scala, используя Lift-Json с классом координат внутри, используемым для хранения информации GeoJson.
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
Я хочу десериализовать json-строку следующего вида:
{
name:"test",
geometry:{
"type": "LineString",
"coordinates": [ [100.0, 0.0], [101.0, 1.0] ]
}
}
в класс Request case с правильным классом исполнения LineString в поле Geometry. Я предполагаю, что должен использовать TypeHint, но как? Это правильный подход или мне следует создать три разных Request (RequestPoint, RequestLineString и RequestPolygon)? Вот код Scala для десериализации:
val json = parse(message)
json.extract[Request]