2014-10-15 14 views
9

Tôi muốn sử dụng giá trị không đổi khi xây dựng một đối tượng thông qua đọc JSON.Giá trị không đổi trong Scala Phát đọc JSON

Ví dụ lớp sẽ là:

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

Và đọc sẽ là:

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

Nhưng tôi không muốn phải xác định giá trị cho userId trong đối tượng JSON. Làm thế nào tôi sẽ đi về mã hóa các Đọc để giá trị của -1 luôn được tạo trong đối tượng UserInfo mà không chỉ định nó trong đối tượng JSON đang được đọc?

Trả lời

9

Sử dụng Reads.pure

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

Cảm ơn!

tôi phải làm cho một sự thay đổi nhỏ để buộc nó vào một Long:

implicit val userRead: Reads[UserInfo] = (
    Reads.pure(-1:Long) and 
    (JsPath \ "firstName").readNullable[String] and 
    (JsPath \ "lastName").readNullable[String] 
)(UserInfo.apply _) 
Các vấn đề liên quan