我一直在学习教程,终于在一定程度上理解了使用 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());
}
}
}