2014-10-07 3 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가 obj2 = 새로운 된 JSONObject() 것이다 '아무것도 포함되어 있습니까? –

+0

죄송합니다. 나는 그것을 바꿀 생각이었습니다 ... 그것이 제 문제였습니다. 상당히 바보 같았습니다. – TheCrownedPixel

답변

5

그것은 트릭을 수행해야합니다

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

예, 그렇게해야합니다. – TehCoder

+1

감사합니다 얘들 아, 해결 됐어. 나는 그걸 알아야 해. 그러나 이제는 JSON 문자열을 전달할 때 오류 메시지 '문자로 시작해야합니다'({ '로 시작해야합니다 .' 나는 JSON을 크게 싫어하기 시작합니다. testFacebookCover를 위의 블록에 추가했습니다. – TheCrownedPixel

관련 문제