This may not be what you want, but with:
implicit val formats = net.liftweb.json.DefaultFormats
.withHints(ShortTypeHints(List(classOf[Geo], classOf[Address])))
enables you to write
val loc: Location = read(write(Geo(0.0, 0.0)))
However your json then gets a TypeHint:
{"jsonClass":"Geo","latitude":0.0,"longitude":0.0}
This formats can be played with somewhat, here is a nice post about type hints.