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
どのように対処しますか?