2013-06-12 59 views
0

感谢您的阅读!与facebook sdk嵌套的JSON解析

我想开发一个android应用程序,但我被困在如何获取用户的“喜欢”。我需要的只是每个“名称”键的值。在这里,那些将是“周杰伦”,“陈奕迅”和“Facebook开发者”。下面是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正确的,因为我现在不能测试它,但它应该以这种方式工作。不要忘了检查是否有一个名为“likes”的属性,并且在使用它来防止NullPointers之前,在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"); 
} 

该列表喜欢包含喜欢的所有“名称”属性。

+0

感谢您的回复!我使用了几乎完全相同的代码,它会在getProperty(“data”)行上抛出NullPointer错误。我无法弄清楚它会如何发生。我的意思是应该有一个名为“数据”的JSON数组。 – user2464763

+0

你正在使用哪个json库? – danijoo