0

我一直在学习教程,终于在一定程度上理解了使用 AsyncTask 以及如何发送 http get 请求以获取返回的 json。我可以得到 json,我认为成功,但无法解析它。

我正在查看的教程使用了一个非常简单的天气 api,它发回非常容易解析的 json。

我的是搜索结果,其中包含每个项目的信息。我的 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 回答