2016-07-10 6 views
1

나는 배열 array1에 다른 배열 인 array2을 포함하고 있습니다.스칼라 플레이 : 배열 내의 Json 배열에 복제

이제 Play를 사용하여 Json에서 구조를 복제하려고합니다.

var json = JsObject(Seq()) 
    array1.foreach(a1 => { 
     json += "a1" -> JsNumber(a1.name) + 
     "a2" -> a1.array2.foreach { 
     a2 => "a2" -> JsString(a2.name) 
     } 
    }) 

내가지고있어 오류가 type mismatch; found : Unit required: play.api.libs.json.JsValue

방법이 문제를 해결하는 것입니다 : 이것은 내 시도? 미리 감사드립니다.

+0

사용지도'대신 'foreach'. 'foreach'는 부작용을위한 것입니다 – ipoteka

+0

어떻게 배열을 어떻게 보이게 할 수 있습니까? 오류를 재현하는 것이 더 쉬울 것입니다. –

답변

1

루프에서 foreach 대신 map을 사용하는 것이 좋습니다.

그것은 조금 당신이 원하는 JSON에 관해서는 불분명하지만 개체의 설명을 기반으로, 나는 이것이 당신이 무엇을 아마 말하고 싶지만 찾고 :`

val json = JsArray(array1.map { a1 => 
    JsObject(List(
    "a1" -> JsNumber(a1.name), 
    "a2" -> JsArray(a1.array2.map { 
     a2 => JsString(a2.name) 
    }) 
)) 
}) 
+0

은 완벽하게 작동했습니다. – ps0604

관련 문제