2017-09-28 21 views
-2

"id"を取得するために解析する必要があるJSONのテキストは次のとおりです。176514、JavaでJSONを解析する方法

必要なコードは何ですか?

{ 
    "response": { 
     "count": 10307, 
     "items": [ 
      { 
       "id": 176514, 
       "from_id": -114200945, 
       "owner_id": -114200945, 
       "date": 1506629224, 
       "marked_as_ads": 0, 
       "post_type": "post", 
       "text": "-я с разбитым сердцем сука,но я всё равно влюблённый.", 
       "post_source": { 
        "type": "api" 
       }, 
       "comments": { 
        "count": 1, 
        "groups_can_post": true, 
        "can_post": 1 
       }, 
       "likes": { 
        "count": 103, 
        "user_likes": 0, 
        "can_like": 1, 
        "can_publish": 1 
       }, 
       "reposts": { 
        "count": 3, 
        "user_reposted": 0 
       }, 
       "views": { 
        "count": 1022 
       } 
      } 
     ] 
    } 
} 

私は私のコード

import java.io.IOException; 
import java.net.URL; 
import java.util.Scanner; 

import org.json.JSONArray; 
import org.json.JSONObject; 


class VK{ 



public static void main(String [] args) throws IOException{ 

    URL url = new URL("my url which return JSON structure"); 
    Scanner scan = new Scanner(url.openStream()); 
    String str = new String(); 

    while (scan.hasNext()) 
     str += scan.nextLine(); 
    scan.close(); 
    JSONObject obj = new JSONObject(str); 


    JSONObject res = obj.getJSONArray("items").getJSONObject(0); 
    System.out.println(res.getInt("id"));   
} 
} 

Eclipseの 私のエラー (いくつかの回を試してみたが..:

Exception in thread "main" org.json.JSONException: JSONObject["items"] not found. 
     at org.json.JSONObject.get(JSONObject.java:472) 
     at org.json.JSONObject.getJSONArray(JSONObject.java:619) 
     at VK.main(VK.java:26) 
+4

トップレベルのオブジェクトにはキー "アイテム"がありません。 ''レスポンス ''を入力するだけで1つのエントリがあります。そのエントリの値はサブオブジェクトであり、_that_には「アイテム」があります。 – yshavit

+3

FYIあなたのjsonを人の読みやすさのために正しくフォーマットすると、@yshavitが何を指摘したかがわかります。 –

答えて

0

あなたが1つのよりレベルが深く行く必要が

JSONObject obj = new JSONObject(str); 
JSONObject firstItem = obj.getJSONObject("response").getJSONArray("items").getJSONObject(0); 
System.out.println(firstItem.getInt("id")); 
+0

それは動作します、ありがとう私は気配りしていません。 –

+0

ハッピーズ:)あなたを助けたら、クールで答えを受け入れて投票してください! – JRG

+0

私はできませんフィードバックのおかげで!評判が15未満の人の投票が記録されますが、公開されている投稿のスコアは変更されません。 –

0

これを試してください:

JSONObject obj = new JSONObject(str);//assuming that obj is the same object as in the example 

//to get the id 
int id = obj.getJSONObject("response").getJSONArray("items").getJSONObject(0).getInt("id");