2014-10-15 16 views
9

Mi piacerebbe utilizzare un valore costante durante la costruzione di un oggetto tramite una lettura JSON.Valore costante in Scala Play Letture JSON

Per esempio la classe sarebbe:

case class UserInfo(
    userId: Long = -1, 
    firstName: Option[String] = None, 
    lastName: Option[String] = None 
) 

E la lettura sarebbe:

implicit val userRead: Reads[UserInfo] = (
     (JsPath \ "userId").read[Long] and 
     (JsPath \ "firstName").readNullable[String] and 
     (JsPath \ "lastName").readNullable[String] 
    )(UserInfo.apply _) 

Ma io non voglio avere a specificare il valore per l'utente id in oggetto JSON. Come fare per codificare le letture in modo che il valore di -1 venga sempre creato nell'oggetto UserInfo senza specificarlo nell'oggetto JSON letto?

risposta

9

Usa Reads.pure

implicit val userRead: Reads[UserInfo] = (
    Reads.pure(-1L) and 
    (JsPath \ "firstName").readNullable[String] and 
    (JsPath \ "lastName").readNullable[String] 
)(UserInfo.apply _) 
0

Grazie!

ho dovuto fare una piccola modifica per costringerlo a un lungo:

implicit val userRead: Reads[UserInfo] = (
    Reads.pure(-1:Long) and 
    (JsPath \ "firstName").readNullable[String] and 
    (JsPath \ "lastName").readNullable[String] 
)(UserInfo.apply _) 
Problemi correlati