如何在android中解析复杂的json

时间:2013-06-10 18:48:00

标签: android json

我一直在关注一个教程,最后使用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());
                }          
            }
        }

2 个答案:

答案 0 :(得分:2)

您还应该使用JSON反序列化库来对象支持嵌套对象。我推荐Gson https://code.google.com/p/google-gson/

答案 1 :(得分:1)

JSON响应中有一个Java类生成器。 jsongen.byingtondesign.com将解析您的json响应并为您提供Java Bean类。这将有助于您了解需求。