2014-10-07 97 views
0

我想,我已经理解了JSON,但是我在阅读内部对象时遇到了一些小问题,例如Cover在这种情况下。从内部读取JSON对象JAVA

{ 
     "id": "19292868552", 
     "about": "Build, grow, and monetize your app with Facebook.\nhttps://developers.facebook.com/", 
     "can_post": false, 
     "category": "Product/service", 
     "checkins": 1, 
     "company_overview": "Visit https://developers.facebook.com for more information on how to build, grow, and monetize your app.\n\nIf you have questions about using Facebook or need help with general inquiries, visit https://www.facebook.com/facebook or our Help Center at http://www.facebook.com/help.\n\nIf you need to report bugs, appeal apps, or ask detailed technical questions, visit the following:\nAppeal Apps: https://developers.facebook.com/appeal\nReport Bugs: http://developers.facebook.com/bugs\nTechnical Questions: http://facebook.stackoverflow.com/", 
     "cover": { 
      "cover_id": "10152004458663553", 
      "offset_x": 0, 
      "offset_y": 0, 
      "source": "https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-xap1/v/t1.0-9/s720x720/1466030_10152004458663553_1984809612_n.jpg?oh=97b895edc21d21c0f40a67a6de6077bd&oe=54BBD66C&__gda__=1422540117_30f73303c987294f8ffccd193d190941" 
     }, 
     "has_added_app": false, 
     "is_community_page": false, 
     "is_published": true, 
     "likes": 3262128, 
     "link": "https://www.facebook.com/FacebookDevelopers", 
     "name": "Facebook Developers", 
     "parking": { 
      "lot": 0, 
      "street": 0, 
      "valet": 0 
     }, 
     "talking_about_count": 10066, 
     "username": "FacebookDevelopers", 
     "website": "http://developers.facebook.com", 
     "were_here_count": 0 
    } 

我一直希望能从JSON中读取这些信息,直到我打开封面部分。我还没有尝试访问parking对象,但我认为问题会相同。

public FacebookCover createFacebookCoverObject (String json) throws 
     JSONException { 

    FacebookCover facebookCover = new FacebookCover(); 


    JSONObject obj = new JSONObject(json); 



    facebookCover.setAbout(obj.getString("about")); 
    facebookCover.setCategory(obj.getString("category")); 
    facebookCover.setCompanyOverview(obj.getString("company_overview")); 
    facebookCover.setId(obj.getString("id")); 
    facebookCover.setIsPublished(obj.getBoolean("is_published")); 
    facebookCover.setLikes(obj.getInt("likes")); 
    facebookCover.setLink(obj.getString("link")); 
    facebookCover.setName(obj.getString("name")); 
    facebookCover.setTalkingAboutCount(obj.getInt("talking_about_count")); 
    facebookCover.setUserName(obj.getString("username")); 
    facebookCover.setWebsite(obj.getString("website")); 
    facebookCover.setWereHereCount(obj.getInt("were_here_count")); 

    Cover theCover = new Cover(); 

    JSONObject obj2 = new JSONObject(); 

    theCover.setCoverId((obj2.getString("cover_id"))); 
    theCover.setOffSetX(obj2.getInt("offset_x")); 
    theCover.setOffSetY(obj2.getInt("offset_y")); 
    theCover.setSource(obj2.getString("source")); 

    return facebookCover; 

} 

这里也是我的测试方法。

public void testCreateFavebookCoverObject() throws Exception { 
    System.out.println("createFavebookCoverObject"); 
    String url = "https://graph.facebook.com/19292868552/"; 
    InputStream is = new URL(url).openStream(); 
    BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); 
    String s = null; 

    s = rd.readLine(); 
    System.out.println(s); 
    FacebookCover instance = new FacebookCover(); 
    FacebookCover result = instance.createFacebookCoverObject(s); 
} 
+2

为什么'JSONObject的OBJ 2 =新的JSONObject();'包含什么吗? – 2014-10-07 15:27:48

+0

对不起,我打算改变它...这是我的问题。相当愚蠢。 – TheCrownedPixel 2014-10-08 00:50:57

回答

5

它应该做的伎俩:

JSONObject obj2 = obj.getJSONObject("cover"); 
+0

是的,应该这样做。 – TehCoder 2014-10-07 15:34:26

+1

谢谢你们,解决了它......我应该知道这一点。但是现在,当我传递JSON字符串时,我收到错误消息'必须以字符1处的'{'开头。'我开始严重不喜欢JSON。我将我的testFacebookCover添加到上面的块中。 – TheCrownedPixel 2014-10-08 00:39:38