2013-06-12 2 views
0

읽어 주셔서 감사합니다!중첩 JSON facebook sdk로 구문 분석

Android 앱을 개발하려하지만 사용자의 '좋아요'를 가져 오는 방법에 집착했습니다. 필요한 것은 각 "이름"키의 값입니다. 여기에는 "Jay Chou", "Eason Chan"및 "Facebook Developers"가 포함됩니다. 다음은 JSON 텍스트입니다.

{ 
    "languages": [ 
    { 
     "id": "111735208843636", 
     "name": "Chinese" 
    }, 
    { 
     "id": "106059522759137", 
     "name": "English" 
    } 
    ], 
    "id": "100005065353669", 
    "likes": { 
    "data": [ 
     { 
     "category": "Musician/band", 
     "name": "Jay Chou", 
     "id": "109155665769390", 
     "created_time": "2013-06-11T18:54:44+0000" 
     }, 
     { 
     "category": "Musician/band", 
     "name": "Eason Chan", 
     "id": "105468519487919", 
     "created_time": "2013-06-05T20:33:26+0000" 
     }, 
     { 
     "category": "Product/service", 
     "name": "Facebook Developers", 
     "id": "19292868552", 
     "created_time": "2013-05-31T01:35:17+0000" 
     } 
    ], 
    "paging": { 
     "next": "https://graph.facebook.com/100005065353669/likes? limit=5000&offset=5000&__after_id=19292868552" 
    } 
    } 
} 

이 코드는 사용자의 "언어"를 가져 오는 데 사용되며 완벽하게 정상적으로 작동합니다.

JSONArray languages = (JSONArray)user.getProperty("languages"); 
if (languages.length() > 0) { 
    ArrayList<String> languageNames = new ArrayList<String>(); 

    for (int i=0; i < languages.length(); i++) { 
     JSONObject language = languages.optJSONObject(i); 
     languageNames.add(language.optString("name")); 
    } 
    userInfo.append(String.format("Languages: %s\n\n", languageNames.toString())); 
} 

user

는 함수 매개 변수 private String buildUserInfoDisplay(GraphUser user)에서오고 userinfo

이 사람이 나를 도울 수

StringBuilder userInfo = new StringBuilder("");에서 온다? 정말 감사합니다!

답변

0

확실하지 않은 경우 exaclty가 맞는지 확실하지 않아요. 지금은 테스트 할 수 없지만 이렇게하면 작동합니다. "좋아하는"이라는 속성이 있는지, 그리고 NullPointer를 막기 위해 사용하기 전에 json 표현에 "data"라는 배열이 있는지 확인하는 것을 잊지 마십시오.

List<String> likes = new ArrayList<String>(); 
JSONObject jsonLikes = (JSONObject) user.getProperty("likes"); 
JSONArray jsonData = (JSONArray) likes.getProperty("data"); 

for(int i = 0; i < data.length(); i++) { 
    likes.add(jsonData.optString("name"); 
} 

목록에는 likes의 모든 "이름"속성이 포함되어 있습니다.

+0

답장을 보내 주셔서 감사합니다. 내가 제공 한 코드와 거의 똑같은 코드를 사용 했으므로 getProperty ("data") 라인에 NullPointer 오류가 발생합니다. 어떻게 될지 알 수 없습니다. "데이터"라는 JSON 배열이 있어야 함을 의미합니다. – user2464763

+0

json 라이브러리를 사용하고 있습니까? – danijoo