過去にいくつかの単純な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();
質問の2番目の部分は、そのような出力を解析するための簡単な解決策があります。ここにスニップがあります:
":"{{pp-move-indef}}{{9 月のカレンダー|float=right}}\n{{ThisDateInRecentYears}}\n{{日}}\n\n==イベント==\n* [[ 456]] – [[Remistus]]、ローマの将軍 (''[[magister militum]]'') は、[[Goths|Goths]] 軍と共に [[Siege|besiege]]d [[Ravenna]]その後、市外の宮殿「in Classis」で処刑されました。\n*[[1111]] – [[Pedro Fr\u00f3ilaz de Traba]] と司教 [[Diego Gelm\u00edrez]] 王冠 [[Le\u00f3n の Alfonso VII と Castile|Alfonso VII] が率いるガリシアの最高貴族] as \"[[Kingdom of Galicia|King of Galicia]]\".\n*[[1176]] – [[Myriokephalon の戦い]] が戦われる。\n*[[1462]] – [[ \u015awiecino の戦い]] (\u017barnowiec の戦いとしても知られる) は、[[13 年戦争 (1454\u201366)|13 年戦争]] の最中に戦われました。