2017-02-24 4 views
0

私はScalaとPlayで実験しています。私はタプル、この場合はタプル3を返すが、任意のサイズのタプルにすることができます。 TupleをJSONとしてシリアル化したいのですが、PlayはどのようにTupleをシリアル化するのか分からないようです。Play FrameworkシリアルTuple3

私はちょうどタイプ(文字列、文字列、文字列)が見つかり、次の

def getClient(clientId: Int) = Action { 
    val result = ("I", "AM", "TUPLE") 
    Ok(Json.toJson(result)) 
} 

ませんJSONシリアライザのような非常にシンプルな何かをしようとしています。このタイプの暗黙的な書き込みまたは書式を実装してください。

私はこれを試しましたが、これはTuple2でしか動作しないようです。

val seq = Seq[(String,String)](("attr1"->"val1"),("attr2"->"val2")) 


val s = Json.toJson(seq.map(e => Json.obj((e._1 -> e._2)))) 
Ok(s).as(JSON) 
+0

を行うことができます

implicit val myCaseClassFormat = Json.format[MyCaseClass] 

で暗黙の作家を追加する必要がありますか?あなたのJsonをどのように見せたいですか?これを知っていれば、あなた自身の暗黙のライターを書くことができます。しかし、あなたがケースクラスを使いたくない理由がありますか? – Simon

+0

私のサービスクラスメソッドがTuple(クライアント、Seq [プロジェクト])を返す場合は、Jsonとしてクライアントに返すようにシリアル化したいでしょう。 Javaでは、DTOオブジェクトにそれらをラップするだけです。多分Scalaで同じことをする必要があるのだろうかと思います。 – greyfox

+1

さて、JSONはどんなことを期待していますか? –

答えて

1

このようなケースクラスを作成できます。

case class MyCaseClass(string1: String, string2: String, string3: String) 

その後、あなたはJSONとしてTuple3をrendreしたいんなぜ、あなたはJson.toJson(MyCaseClass("I", "AM", "TUPLE"))

+0

これは私がやったことです、私がJavaで取るのと同じアプローチです – greyfox