I am following **Play For Scala ** for validation and parsing of Json
I am receiving a request in controller after converting it to JsValue like this
val jsonRequest = request.body.asJson.get
i am trying to validate it like this
jsonRequest.validate[ReadArtWorkCaseClass].fold(
valid = {
readArtWorkCaseClass =>
log.info("valid block")
Ok("validation successful" )
},
invalid = {
log.info("invalid block")
errors => {
log.info("error block")
BadRequest(JsError.toFlatJson(errors))
}
}
)
i have implemented Read for this
case class ReadArtWorkCaseClass(artworkid :String,
artistid :String,
institutionid :String ,
status :String,
groupactivityid:String,
details:String,
pricehistoryid :String,
sku :String,
dimensions :String,
artworkname :String,
artworkseries :String ,
workclassifier :String ,
genreid :String,
artworktype :String,
createddate:String)
object ReadArtWorkCaseClass {
implicit val artworkReads: Reads[ReadArtWorkCaseClass] = (
(JsPath \ "artWorkid").read[String] and
(JsPath \ "artistid").read[String] and
(JsPath \ "institutionid").read[String] and
(JsPath \ "activationStatus").read[String] and
(JsPath \ "groupactivityid").read[String] and
(JsPath \ "details").read[String] and
(JsPath \ "pricehistoryid").read[String] and
(JsPath \ "sku").read[String] and
(JsPath \ "dimensions").read[String] and
(JsPath \ "artworkname").read[String] and
(JsPath \ "artworkseries").read[String] and
(JsPath \ "workclassifier").read[String] and
(JsPath \ "genreid").read[String] and
(JsPath \ "artworktype").read[String] and
(JsPath \ "createddate").read[String]
)(ReadArtWorkCaseClass.apply _)
}
when i tried to validate jsonrequest by inputing empty fields it does not go into the invalid block instead runs the valid block
please guide me what is my mistake
minLength(10)instead. It looks like the type parameter is already set toStringand you don't need to specify it when calling the function.