3

http://www.worldweatheronline.comJSONフィードから天気情報を解析しようとしています。これは、次の形式で提供されます。

{ "data" : { "current_condition" : [ { "cloudcover" : "75",
        "humidity" : "100",
        "observation_time" : "10:01 PM",
        "precipMM" : "0.0",
        "pressure" : "1015",
        "temp_C" : "3",
        "temp_F" : "37",
        "visibility" : "4",
        "weatherCode" : "143",
        "weatherDesc" : [ { "value" : "Mist" } ],
        "weatherIconUrl" : [ { "value" : "http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0006_mist.png" } ],
        "winddir16Point" : "N",
        "winddirDegree" : "360",
        "windspeedKmph" : "11",
        "windspeedMiles" : "7"
      } ],

だからcurrent_condition JSONArray、私がなんとか値を取得することができたがあります。しかし、内部配列から値を読み取るにはどうすればよいですweatherDescweatherIconUrl

precipMM、、などpressureを読み取るための私のコードは次のtemp_Cとおりです。

String precipMM = null;
    try {
        JSONObject data = json.getJSONObject("data");

        JSONArray current_condition = data.getJSONArray("current_condition");

        for(int i = 0; i < current_condition.length(); i++) {
            precipMM = current_condition.getJSONObject(i).getString("precipMM");
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
4

2 に答える 2

3

それは同じくらい簡単です

current_condition.getJSONArray()

jsonの解析と同様に、このライブラリ http://jackson.codehaus.org/を参照することをお勧めします。

コメントした後編集

あなたが投稿したコードは大幅に改善される可能性があります。値ごとに配列を反復処理しています。アレイでも同じことができます。.getJsonObject()の代わりに.getJsonArray()を呼び出すだけです。ただし、これは、コードが他の各値に対してエラーをスローしていることを意味します。ジャクソン図書館をもう一度お勧めします

于 2013-01-11T00:20:52.323 に答える
2

weatherDesc配列として提供さweatherIconUrlれるため、アイテムごと、つまりforループ内にアクセスできます。

と同じコマンドを使用するだけですcurrent_condition

于 2013-01-11T00:18:38.250 に答える