2014-09-28 23 views
0

下面的代码给出了2.3斯卡拉剧的框架 - 解析JSON带有嵌入对象

No implicit Reads for controllers.Inner available. 

编译错误,如果我改变

case class Outer (in : Inner) 

case class Outer (in : String) 

它会编译很好,我可以解析json和OuterInner

解析JSON与嵌入对象的最佳方式是什么?

case class Outer (in : Inner) 
object Outer { 
    implicit val reads = Json.reads[Outer] 
} 


case class Inner (deep: String) 
object Inner { 
    implicit val reads = Json.reads[Inner] 
} 


object Test extends Controller { 
    def tester = Action { 
    implicit request => 


     val json = request.body.asJson.getOrElse(throw new InvalidRequest("No JSON found in request")) 
     val validatedJSON = json.validate[Inner] 


     Ok("") 


    } 
} 

感谢

回答

0

顺序很重要。

case class Inner (deep: String) 
object Inner { 
    implicit val reads = Json.reads[Inner] 
} 

case class Outer (in : Inner) 
object Outer { 
    implicit val reads = Json.reads[Outer] 
} 

object Test extends Controller { 
    def tester = Action { 
    implicit request => 

     val json = request.body.asJson.getOrElse(throw new InvalidRequest("No JSON found in request")) 
     val validatedJSON = json.validate[Inner] 

     Ok("") 

    } 
}