2017-02-24 7 views
0

스칼라 앤 플레이로 실험하고 있습니다. 튜플,이 경우에는 Tuple3을 반환하고 싶지만 어떤 크기의 튜플이 될 수도 있습니다. Tuple을 JSON으로 직렬화하려고하지만 Play는 Tuple을 직렬화하는 방법을 모르는 것 같습니다.Play Framework Serial 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] 

으로 암시 작가를 추가해야? 너의 존슨을 어떻게 보이게 할까? 이것을 알고 있다면 자신의 암묵적인 작가를 쓸 수 있습니다. 그러나 사례 클래스를 사용하고 싶지 않은 이유가 있습니까? – Simon

+0

내 서비스 클래스 메서드가 Tuple (Client, Seq [Project])를 반환하면 클라이언트로 반환하기 위해 Json으로 직렬화하려고합니다. Java에서는 DTO 객체로 래핑합니다. 스칼라에서 같은 일을해야하는지 궁금합니다. – 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