我很难弄清楚如何正确解析这个 JSON 文件。
{
"count": 10,
"timestamp": 1333243153,
"total": 100,
"diggs": [
{
"date": 1333243146,
"item": {
"status": "upcoming",
"container": {
"name": "Politics",
"short_name": "politics"
},
"description": "Major steps toward the disestablishment of Norway's state church, the (Lutheran) Church of Norway, were passed by the government on March 16 in its weekly session with King Harald V.",
"title": "National Secular Society - Norway continues the long process of disestablishing the Lutheran Church",
"submit_date": 1333206325,
"media": 0,
"diggs": 5,
"comments": 0,
"topic": {
"name": "Politics",
"short_name": "politics"
},
"shorturl": {
"short_url": "http://digg.com/news/politics/national_secular_society_norway_continues_the_long_process_of_disestablishing_the_lutheran_church",
"view_count": 0
},
"promote_date": null,
"link": "http://www.secularism.org.uk/news/2012/03/norway-continues-the-long-process-of-disestablishing-the-lutheran-church",
"href": "http://digg.com/news/politics/national_secular_society_norway_continues_the_long_process_of_disestablishing_the_lutheran_church",
"id": "20120331150525:56935e86-2dbf-4831-ad60-50def7781e68"
},
"user": {
"name": "ghelms",
"links": [],
"registered": 1158007588,
"profileviews": 0,
"fullname": "Gary Helms",
"icon": "http://cdn2.diggstatic.com/user/614412/l.2001177284.png"
},
"digg_id": "20120401011907:5cf92ee9-e915-4358-b14f-cf140b760469"
},
],
"offset": 0
}
我试图只获取一些元素“日期”、“描述”、“标题”、“diggs”、“链接”和“digg_id”。每当我尝试解析时,它在 listView 中都不起作用,但如果我在 GetMethod 类中使用字符串,它会将整个 API 解析为字符串并正常打印。
我的代码:
public DiggItemList lastDigg () throws Exception {
ArrayList<HashMap<String,DiggItem>> diggsList = new ArrayList<HashMap<String, DiggItem>>();
JSONArray diggs = null;
JSONObject json = null;
Intent in = getIntent();
String short_name = in.getStringExtra(TAG_SHORT_NAME);
GetMethod get = new GetMethod();
json = get.getInternetData();
try {
diggs = json.getJSONArray("diggs");
dlists = new DiggItemList();
for (int i = 0; i < diggs.length(); i++) {
JSONObject c = diggs.getJSONObject(i);
String date = c.getString("date");
String description = c.getString("description");
String title = c.getString("title");
int digg = c.getInt("diggs");
String link = c.getString("link");
int digg_id = c.getInt("digg_id");
//JSONObject topic = c.getJSONObject("topic");
//String sn = topic.getString("short_name");
DiggItem di = new DiggItem();
di.setDate(c.getInt("date"));
di.setDescription(c.getString("description"));
di.setTitle(c.getString("title"));
di.setDiggs(c.getInt("diggs"));
di.setLink(c.getString("link"));
di.setDigg_id(c.getString("digg_id"));
dlists.add(di);
/*
if (sn.equals(short_name)) {
dlists.add(di);
}
*/
}
}catch (JSONException e) {
e.printStackTrace();
}
return dlists;
}
获取 API 的类。(http://services.digg.com/2.0/digg.getAll)。
public class GetMethod {
public JSONObject getInternetData() throws Exception {
BufferedReader in = null;
String data = "";
JSONObject jObj = null;
try {
HttpClient client = new DefaultHttpClient();
URI website = new URI("http://services.digg.com/2.0/digg.getAll");
HttpGet request = new HttpGet();
request.setURI(website);
HttpResponse response = client.execute(request);
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
while ((line = in.readLine()) != null) {
sb.append(line + "\n");
}
in.close();
data = sb.toString();
}finally {
if (in != null) {
try {
in.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}
try {
jObj = new JSONObject(data);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}