我一直在关注一个教程,最后使用AsyncTask了解了一个不错的学位,以及如何发送一个http get请求来返回json。我可以得到json,我认为成功但是在解析它时遇到了麻烦。
我正在看的教程使用了一个非常简单的天气api,它可以发送回简单的json来解析。
我的搜索结果包含每个项目的信息。我的json看起来像这样:
我意识到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());
}
}
}
答案 0 :(得分:2)
您还应该使用JSON反序列化库来对象支持嵌套对象。我推荐Gson https://code.google.com/p/google-gson/
答案 1 :(得分:1)
JSON响应中有一个Java类生成器。 jsongen.byingtondesign.com将解析您的json响应并为您提供Java Bean类。这将有助于您了解需求。