私はScalaの初心者で、他の人のコードを拡張しています。このコードでは、PlayフレームワークのJSONライブラリを使用しています。私はクラスFuture[Option[A]]
とFuture[Option[List[B]]
のオブジェクトにアクセスしています。 A
クラスとB
クラスはそれぞれ独自のJSON writes
メソッドを持っているので、それぞれがWebリクエストに対する応答としてJSONを返すことができます。私はHTTP応答として返すことができる単一のJSON応答にこれらを組み合わせようとしています。Playフレームワークで複合クラスの複合グループからJSON出力を作成する方法
私は、単一のクラスへA
とB
を構成するクラスを作成すると、私はこれを行うことができるようになると思ったこれらの線に沿って何か:
case class AAndB(a: Future[Option[A]], b: Future[Option[List[B]]])
object AAndB {
implicit val implicitAAndBWrites = Json.writes[AAndB]
}
しかし、それはすべての場所で失敗します。 AとBの両方が、このように構成されている:B
ので
sealed trait A extends SuperClass {
val a1: String = "identifier"
}
case class SubA(a2: ClassA2) extends A {
override val a1: String = "sub identifier"
}
object SubA {
val writes = Writes[SubA] { aa =>
Json.obj(
"a1" -> aa.a1
"a2" -> aa.a2
)
}
}
リストとしてアクセスされ、期待される出力は、これらの線に沿って次のようになります
{
"a":{
"a1":"val1",
"a2":"val2"
},
"b":[
{
"b1":"val 3",
"b2":"val 4"
},
{
"b1":"val 5",
"b2":"val 6"
},
{
"b1":"val 7",
"b2":"val 8"
}
]
}
あなたの助けが理解されます。
あなたはAとBのjson構造とAとBを結合するサンプル最終的なjson構造を共有できますか? –
'' future''を 'case class'プロパティとして持つことは疑問です – cchantep