I'm trying to read Json data in my Play Scala program. The Json may contain nulls in some fields, so this is how I defined the Reads object:
implicit val readObj: Reads[ApplyRequest] = (
(JsPath \ "a").read[String] and
(JsPath \ "b").read[Option[String]] and
(JsPath \ "c").read[Option[String]] and
(JsPath \ "d").read[Option[Int]]
) (ApplyRequest.apply _)
And the ApplyRequest case class:
case class ApplyRequest ( a: String,
b: Option[String],
c: Option[String],
d: Option[Int],
)
This does not compile, I get No Json deserializer found for type Option[String]. Try to implement an implicit Reads or Format for this type.
How to declare the Reads object to accept possible nulls?
You can use readNullable
to parse missing or null
fields:
implicit val readObj: Reads[ApplyRequest] = (
(JsPath \ "a").read[String] and
(JsPath \ "b").readNullable[String] and
(JsPath \ "c").readNullable[String] and
(JsPath \ "d").readNullable[Int]
) (ApplyRequest.apply _)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With