0

過去にいくつかの単純なjsonを解析しましたが、これはもう少し問題を引き起こしています. ウィキペディアの「歴史のこの日」からデータを取得しようとしています

JSON 出力を含む URL の例

通常の HTML の実際の URL

ここで、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 年戦争]] の最中に戦われました。

4

1 に答える 1

0
JSONObject pages = new JSONObject(json.getJSONObject("pages"));

// Use this to get IDs
Iterator<String> keys = pages.keys();

// Then iterate
while (keys.hasNext()) {
  JSONObject page = new JSONObject(pages.get(keys.next()));
  // Do something with the page
}
于 2013-04-24T14:11:07.763 に答える