所以我一直在尝试解析Reddits r / hot / .json API以获取主题信息的列表视图,但我似乎无法使我的JSON正确。我到处寻找,我似乎找不到如何为reddit做这个的好例子。这是我到目前为止所拥有的......
JSONObject response = new JSONObject(result);
JSONObject data = response.getJSONObject("data");
JSONArray hotTopics = data.getJSONArray("children");
for(int i=0; i<hotTopics.length(); i++) {
JSONObject topic = hotTopics.getJSONObject(i);
String author = topic.getString("author");
String imageUrl = topic.getString("thumbnail");
String postTime = topic.getString("created_utc");
String rScore = topic.getString("score");
String title = topic.getString("title");
topicdata.add(new ListData(title, author, imageUrl, postTime, rScore));
Log.v(DEBUG_TAG,topicdata.toString());
}
-------编辑 好的,我提供了更多详细信息,我在&#34; http://www.reddit.com/r/hot/.json?sort=new&count=25&#34;上做了一个HttpGet请求。 当我运行我的代码时,我得到以下JSONException
07-06 22:23:11.628 2580-2580/com.google.android.gms.redditviewr.app W/System.err﹕ org.json.JSONException: No value for author
07-06 22:23:11.632 2580-2580/com.google.android.gms.redditviewr.app W/System.err﹕ at org.json.JSONObject.get(JSONObject.java:354)
07-06 22:23:11.632 2580-2580/com.google.android.gms.redditviewr.app W/System.err﹕ at org.json.JSONObject.getString(JSONObject.java:514)
07-06 22:23:11.636 2580-2580/com.google.android.gms.redditviewr.app W/System.err﹕ at Tasks.RedditApiTask.onPostExecute(RedditApiTask.java:78)
07-06 22:23:11.636 2580-2580/com.google.android.gms.redditviewr.app W/System.err﹕ at Tasks.RedditApiTask.onPostExecute(RedditApiTask.java:22)
07
这指向我的JSON解析逻辑中的第一项。但这没有任何意义,因为在children数组中确实存在所有这些项目。
答案 0 :(得分:9)
由于结构是
,你必须更深入一层result
-- data
---- children
------ data
-------- author
-------- thumbnail
-------- created_utc
-------- score
-------- title
尝试这样的事情
for (int i = 0; i < hotTopics.length(); i++) {
JSONObject topic = hotTopics.getJSONObject(i).getJSONObject("data");
String author = topic.getString("author");
String imageUrl = topic.getString("thumbnail");
String postTime = topic.getString("created_utc");
String rScore = topic.getString("score");
String title = topic.getString("title");
topicdata.add(new ListData(title, author, imageUrl, postTime, rScore));
Log.v(DEBUG_TAG, topicdata.toString());
}
答案 1 :(得分:4)
如果您使用retrofit + jsonschema2pojo
,可以让您的生活更轻松或者您可以将rest2mobile插件/库添加到您的Android Studio中,该插件/库会立即实现相同的功能。请参阅基于rest2mobile示例here的reddit。