2016-07-20 4 views
-1

JSONファイル内のフィールドから特定の値を取得しようとしています。これはJSONファイルで初めて作業しているので、正しく動作しているかわかりません。JSONから特定の価値をどのように得ることができますか?

このブロックは、気象WebサイトからJSONを取得し、JSONを文字列として返します。この文字列は、次に使用されます。残念なことにAndroid Studioでこのアプリを実行してログを見るたびに、ログには常にweatherに値がないと表示されます。私がやろうとしている何

protected void onPostExecute(String response) { 
    if(response == null) { 
     response = "THERE WAS AN ERROR"; 
    } 

    progressBar.setVisibility(View.GONE); 
    Log.i("INFO", response); 
    responseView.setText(response); 

    // TODO: check this.exception 
    // TODO: do something with the feed 

    try { 
     JSONObject object = (JSONObject) new JSONTokener(response).nextValue(); 
     String weather = object.getString("weather"); 
     Toast.makeText(MyActivity.this, "There is rain", Toast.LENGTH_SHORT).show(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

weatherセクション

Hereからグラブ情報は、私はから解析しようとしているJSONのリンクです。このテキストボックスには、JSONレスポンスのリンクが多すぎるため、ここに投稿することができませんでした。私は何が起こっているのか把握しようとしています、そして、どんな助けも大いに評価されるでしょう。

+0

あなたは 'JSONObject object = new JSONObject(response)'を使ってみましたか? –

+0

ええ、私は自分のコードを調整しました。 JSONObjectオブジェクト=新しいJSONObject(応答); 文字列の日付=オブジェクトです。getString( "weather"); 天気と同じものはありません。 –

答えて

2

responseを印刷して、正確にJSONかどうかを確認できます。

JSON文字列が正しく取得されているものとします。

JSONObject object = new JSONObject(response); 
String weather = object.getString("weather"); 

しかし、JSONはあなたの得られた場合には、正確にweather文字列がありませんのでごresponse、上記のコードは動作しませんです。ルートにはresponsecurrent_observationしか含まれていません。

weatherの内容がcurrent_observationの場合は、以下のコードを使用してください。

JSONObject object = new JSONObject(response); 
JSONObject current_obs = object.getJSONObject("current_observation"); 
String weather = current_obs.getString("weather"); // Clear 
+0

ありがとうございます。これはまさに私が探していたものでした。 –

1
JSONObject object = (JSONObject) new JsonObject(responseString); 
String weather = object.getString("weather"); 
0

まずあなたが文字列にあなたの応答を取得する必要があります。 これで、応答ごとにjson解析を開始します。 OR jsonの解析にもGsonクラスを使用できます。

はJSONObjectからJSON値を取得します:JSONObjectを解析する

{"weather":"sunny"} 

コードスニペットを。

JSONObject object = new JsonObject(response); 
String weather= object.getString("weather"); 

JSONArrayからJSON値を取得します。JsonArrayを解析する

[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...] 

コードスニペットを。

JSONArray jsonarray = new JSONArray(response); 
for (int i = 0; i < jsonarray.length(); i++) { 
    JSONObject jsonobject = jsonarray.getJSONObject(i); 
    String name = jsonobject.getString("name"); 
    String url = jsonobject.getString("url"); 
} 

ご希望の場合はお手数ですが、

関連する問題