我过去解析过一些简单的 json,但这个给我带来了更多麻烦。我正在尝试从维基百科的“历史上的这一天”中获取数据
现在,如果您将 JSON URL 弹出到:http: //jsonlint.com/以获取细分,我遇到的第一个麻烦是在这种情况下的页面之后的对象之后,“27993”总是不同的,所以我该如何获取这个如果我不知道名字?
到目前为止,出于测试目的,我有这段代码:
JSONObject json = new JSONObject(result);
input.close();
JSONObject json2 = new JSONObject(json.getString("query").toString());
JSONObject json3 = new JSONObject(json2.getString("pages").toString());
JSONObject json4 = new JSONObject(json3.getString("27993").toString());
JSONArray contacts = json4.getJSONArray("revisions");
StringBuilder builder = new StringBuilder();
builder.append(contacts.getString(0));
return builder.toString();
这将返回修订数组中的所有内容,这将导致我的下一个问题......是否有一种简单的方法来解析该输出?
编辑:解决问题#1的修订代码现在关于解析该输出?
JSONObject json = new JSONObject(result);
input.close();
JSONObject json2 = new JSONObject(json.getString("query").toString());
JSONObject json3 = new JSONObject(json2.getString("pages").toString());
Iterator i = json3.keys();
JSONObject j = null;
while (i.hasNext()) {
try {
String key = i.next().toString();
j = json3.getJSONObject(key);
} catch (JSONException e) {
e.printStackTrace();
}
}
JSONArray contacts = j.getJSONArray("revisions");
StringBuilder builder = new StringBuilder();
builder.append(contacts.getString(0));
return builder.toString();
问题的第二部分是解析此类输出的简单解决方案。这是一个片段:
":"{{pp-move-indef}}{{九月日历|float=right}}\n{{ThisDateInRecentYears}}\n{{Day}}\n\n==Events==\n* [[ 456]] – [[Remistus]],罗马将军 (''[[magister militum]]''),在 [[Ravenna]] 拥有 [[Goths|Gothic]] 部队 [[Siege|besiege]]d后来在城外的“in Classis”宫中被处决。\n*[[1111]] – 由 [[Pedro Fr\u00f3ilaz de Traba]] 和主教 [[Diego Gelm\u00edrez]] 领导的加利西亚最高贵族 [[Alfonso VII of Le\u00f3n and Castile|Alfonso VII] ] as \"[[加利西亚王国|加利西亚国王]]\"。\n*[[1176]] – [[Myriokephalon 之战]] 进行了。\n*[[1462]] – [[ \u015awiecino]] 战役(也称为 \u017barnowiec 战役)在 [[十三年战争 (1454\u201366)|十三年战争]] 期间进行。