Полиморфная десериализация Лифта-Джона в составном классе

Я пытаюсь автоматически десериализовать объект 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] ]
  }
}

в класс Case запроса с правильным классом времени выполнения LineString в поле Geometry. Я думаю, что я должен использовать TypeHint, но как? Это правильный подход, или я должен создать три разных запроса (RequestPoint, RequestLineString и RequestPolygon)? Это будет код Scala для десериализации:

val json = parse(message)
json.extract[Request]

Ответы на вопрос(1)

Ваш ответ на вопрос