Scala 如何使用play json将具有单个值的json转换为case类

Scala 如何使用play json将具有单个值的json转换为case类,scala,playframework,playframework-2.3,Scala,Playframework,Playframework 2.3,我很难找到如何将具有单个值的json文档转换为case类。以下是json: { "ax" : { "bx" : "value1", "by" : "value2 } } 以下是案例类别: case class B(bx: String, by: String) case class A(ax: B) 以下是内容: import play.api.libs.json._ import play.api.libs.json.Rea

我很难找到如何将具有单个值的json文档转换为case类。以下是json:

{
  "ax" : {
           "bx" : "value1",
           "by" : "value2
         }
}
以下是案例类别:

case class B(bx: String, by: String)
case class A(ax: B)
以下是内容:

import play.api.libs.json._
import play.api.libs.json.Reads._
import play.api.libs.functional.syntax._

object Implicits {
     implicit val bReads: Reads[B] = (
        ( __ \ "bx" ).read[String] ~
        ( __ \ "by" ).read[String]
     ) ( B.apply _ )    

     implicit val aReads: Reads[A] = (
        ( __ \ "ax" ).read[B]
     ) ( A.apply _ )
}
第二个隐式表达式未编译,出现以下错误:

Error:(X, Y) overloaded method value read with alternatives:
(t: B)play.api.libs.json.Reads[B] <and>
(implicit r: play.api.libs.json.Reads[B])play.api.libs.json.Reads[B]
cannot be applied to ((B, Option[String]) => A)
   ( __ \ "ax" ).read[B] 
隐式阅读:

implicit val aReads: Reads[A] = (
   ( __ \ "ax" ).read[B] ~
   ( __ \ "temp" ).readNullable[String]
) ( A.apply _ )

如何在不向类中添加不存在的内容的情况下进行读取?有什么想法吗?

使用Play JSON时,
读取单个param case类的
实例有点不方便,但是下面应该可以

 implicit val reads: Reads[A] =
    (JsPath \ "ax").read[B].map(A.apply)

旁注:
读取
A
B
应该放在它们的伴生对象中,隐式将被正确解析。那么,就不需要导入隐式。。除非你因为某种原因需要把它们关掉。在这种情况下,不管怎样,显式通话会更清晰。谢谢。我会记住这一点。对于单个值的写入情况如何?不能过分强调这有多大帮助
 implicit val reads: Reads[A] =
    (JsPath \ "ax").read[B].map(A.apply)