2013-07-27 2 views
1

저는 스칼라에 익숙하지 않아서 다음과 같은 구문 분석을 수행하는 데 약간의 문제가 있습니다.스칼라에서 파싱 된 문자열 목록 JSON 응답

현재, 내가 요청이 액세스 토큰을 부여 페이스 북 친구를 검색 할 수 있도록 :

val duration = Duration(10, SECONDS) 
val future: Future[play.api.libs.ws.Response] = WS.url("https://graph.facebook.com/me?fields=id&access_token=" + token).get() 
val response = Await.result(future, duration) 

내가 response.json를 통해 JSON 응답에 액세스 할 수 있습니다. 그러나 친구는 다음과 같은 형식으로 반환됩니다 :

{ 
    "data": [ 
    { 
     "name": "Person 1", 
     "id": "1" 
    }, 
    { 
     "name": "Person 2", 
     "id": "2" 
    }, 
    { 
     "name": "Person 3", 
     "id": "3" 
    } ... 
    ], 
    "paging": { 
    ... 
    } 
} 

내가 "(response.json의 \"데이터 ")"에 의해 "데이터"사전을 검색 할 수 있다는 것을 알고 있지만 방법에 대한이 이 JSON을 구문 분석하여 데이터의 모든 ID를 List로 얻을 수있는 방법은 무엇입니까?

답변

5

이 작동합니다

response.json \ "data" \\ "id" 

\\ 연산자의 문서에서 :

조회 현재 객체의 fieldName에 모든 자손.

+0

감사합니다. Marius 님, 그런 컬렉션에서 액세스 할 수 있는지 모르 셨습니다. 이것은 JsValues의 List를 반환합니다. String을 List로 변환 할 수 있습니까? – istian11

+0

네, 다음과 같이 문자열리스트를 얻을 수 있습니다 :'(response.json \ "data"\\ "id") map (_. [String])' –

+0

다음 오류가 반환되었습니다 : "유형 불일치; 찾음 : Seq [String] required : List [String]" – istian11