我正在疯狂地尝试在 Play Framework 2.2 中解析这个 JSON 结构:
val jsonStr = """{ personFirstName: "FirstName",
personLastName: "LastName"
positionLat: null,
positionLon: null }"""
我有 2 个案例类:
case class Position( val lat: Double, val lon: Double)
case class Person( firstName: String, lastName: String, p: Option[Position] )
如您所见,位置在 Person 案例类中不是强制性的。
我试图使用类似这样的东西来获取 Person 的实例
implicit val reader = (
(__ \ 'personFirstName ).read[String] ~
(__ \ 'personLastName ).read[String] ~
( (__ \ 'positionLat ).read[Double] ~
(__ \ 'positionLon ).read[Double] )(Position)
)(Person)
但我很快意识到我不知道如何处理该对象:如果指定了 'lat' 和 'lon' 并且不为 null,则Option[Position]
意图是实例化 a ,否则实例化。Some(Position(lat,lon))
None
你会怎么处理呢?