I extended following reads to solve this:
implicit object myStringReads extends Reads[String] {
override def reads(json: JsValue) = {
json match {
case JsNull => JsSuccess("")
case JsString(s) => JsSuccess(s)
case _ => JsError(Seq(JsPath -> Seq(JsonValidationError("error.expected.jsstring"))))