6

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 ケース クラスでは Position は必須ではありません。

このようなものを使用して 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

どのように対処しますか?

4

2 に答える 2