2017-06-27 19 views
0

私はこのリンクを持っています:JSON fileJavaのURLからJSON項目を取得する

これはオンラインサーバーに保存されています。すべていいですが、 "hood_id"や "damage_or_theft_car_id"のような項目を取得したいのですが、起動時にコードがクラッシュすることがあります。

public class JSONParser { 
    private String read(BufferedReader bufferedReader) throws IOException { 
     //Creates new StringBuilder to avoid escaping chars 
     StringBuilder stringBuilder = new StringBuilder(); 
     //Gets the currentLine 
     String currentLine; 
     while((currentLine = bufferedReader.readLine()) !=null){ 
      //Adds the currentLine to the stringBuild if the currentLine is not null 
      stringBuilder.append(currentLine); 
     } 
     //Returns the StringBuilder is String format 
     return stringBuilder.toString(); 
    } 

public JSONObject readJsonFromUrl(String JSONurl) throws IOException, JSONException { 
    InputStream url = new URL(JSONurl).openStream(); 
    try { 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(url)); 
     String jsonText = read(bufferedReader); 
     JSONArray jsonArray = new JSONArray("[" +jsonText + "]"); 
     //JSONObject json = new JSONObject(jsonText); 
     JSONObject json = jsonArray.getJSONObject(0); 
     return json; 
    } finally { 
     url.close(); 
    } 
} 

public void printJSON() throws IOException, JSONException { 
    JSONObject json = readJsonFromUrl("http://test.dontstealmywag.ga/api/damage_or_theft_car.php"); 
    System.out.println(json.toString()); 
    System.out.println(json.get("hood_id")); 
} 

}

私はjson.get("damage_or_theft_car");コードの動作を入力すると:エラーJSONオブジェクトが

を発見していないとこれは私が試したものです。誰か助けてくれますか?私は、JSONのトップ階層にない問題がJSONArraysとJSONOjects

+1

「何とか私のコードがクラッシュする」どういう意味ですか?エラーがありますか?はいの場合は、スタックトレースを追加できますか? – Nathan

+0

@Nathan申し訳ありませんが、エラーを追加しました。 JsonObjectが見つかりません –

+0

ここに完全なエラースタックを投稿してください。 IDE /ブラウザからスタックトレースをコピーして貼り付けます。 –

答えて

1

「hood_id」であると思いますが、これはおそらく得る理由です:

org.json.JSONException:JSONObject [「hood_id」

System.out.println(json.get("hood_id"));は、念のために:あなたが実行します。

System.out.println(json.get("damage_or_theft_car")); 
]行で

が見つかりません

プログラムは行を実行し、jsonコンテンツを印刷します。


あなたがhood_idの値を印刷したい場合は、リスト内の各JSONに掘るする必要があります。例:

System.out.println(json.getJSONArray("damage_or_theft_car") 
          .getJSONObject(0).get("hood_id")); 
+0

ありがとう、これは動作します。どのようにして配列のサイズを取得できますか? –

+0

ようこそ。 'length'を使うだけのサイズを得るには:' json.getJSONArray( "damage_or_theft_car")。length() ' –

関連する問題