0

私はチュートリアルに従ってきましたが、最終的に AsyncTask を使用して適切な程度に理解し、json を取得するために http get 要求を送信する方法を理解しました。json を取得できます。成功したと思いますが、解析に問題があります。

私が見ていたチュートリアルでは、非常に簡単な json を返して解析する非常に単純な天気 API を使用しています。

私のものは、各アイテムの情報を含む検索結果です。私のjsonは次のようになります:

http://pastebin.com/f65hNx0z

json オブジェクトと情報の配列の違いを認識しています。各ビールと醸造所の情報を取得するために解析する方法について少し混乱しています。

以下の私のコード:

String jsonUrl = url + query;
            Toast.makeText(this, jsonUrl, Toast.LENGTH_SHORT).show();

            //todo: get json 
            new ReadJSONResult().execute(jsonUrl);

            return false;
        }

        private class ReadJSONResult extends AsyncTask
        <String, Void, String> {
            protected String doInBackground(String... urls) {
                return readJSONFeed(urls[0]);
            }

            protected void onPostExecute(String result) {
                try {

                    ///code below is what I kow I need to reconstruct and change to parse
                    JSONObject jsonObject = new JSONObject(result);
                    JSONObject weatherObservationItems = 
                        new JSONObject(jsonObject.getString("weatherObservation"));

                    Toast.makeText(getBaseContext(), 
                        weatherObservationItems.getString("clouds") + 
                     " - " + weatherObservationItems.getString("stationName"), 
                     Toast.LENGTH_SHORT).show();


                } catch (Exception e) {
                    Log.d("ReadWeatherJSONFeedTask", e.getLocalizedMessage());
                }          
            }
        }
4

2 に答える 2

2

ネストされたオブジェクトもサポートするオブジェクトには、JSON デシリアライザー ライブラリを使用する必要があります。Gson をお勧めします https://code.google.com/p/google-gson/

于 2013-06-10T18:52:11.930 に答える
1

JSON 応答からの Java クラス ジェネレーターがあります。jsongen.byingtondesign.comは、json 応答を解析し、Java Bean クラスを提供します。必要性を理解するのに役立ちます。

于 2013-06-10T19:02:35.950 に答える