2013-04-24 187 views
0

我已經解析過一些簡單的json,但是這個給了我更多的麻煩。我想「在歷史上的這一天」Android java解析JSON問題

Example URL with JSON output

Actual URL in regular HTML

如果彈出JSON網址爲擺脫維基百科的數據現在: 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-布展INDEF}} {{九月 日曆|浮子=右}} \ N {{ThisDateInRecentYears}} \ n {{日}} \ n \ n ==事件== \ n * [[456]] – [[Remistus]],羅馬將軍(''[[magister militum]]'')是[[Siege | besiege]] d一個[[Goths | Gothic]]力量 [[Ravenna]],後來在城市的 之外的宮殿''在Classis''執行。 \ n * [[1111]] –由[[Pedro Frézde Traba]]和主教[Diego Gelm \ u00edrez]皇冠 [León和Castile的Alfonso VII | Alfonso \ n [[1176]] [[1276]] [[[1262]] [[戰爭的 Myriokephalon]]是戰鬥。\ n [[1462]] –在[[十三年戰爭(1454年)|十三年' 戰爭]]期間,[[Battle of of [ \ u015awiecino]](也稱爲\ u017barnowiec戰役)戰鬥 。\ n * [[ 1577]] – [[貝爾熱拉克的和平]]在 [[法國的亨利三世]]和[[胡格諾茨]]之間簽署。\ n * [[1630]] – 城市[波士頓]

+3

http://developer.android.com/reference/org/json/JSONObject.html#keys() – Selvin 2013-04-24 14:07:17

+0

致謝!非常有幫助 – Paul 2013-04-24 14:17:58

+0

我不明白你的第二個問題嗎? – njzk2 2013-04-24 14:27:51

回答

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 
} 
+0

謝謝,我實際上做了我自己的代碼,從你發佈這個之前發佈的鏈接,但這也可以!任何解析輸出的想法? – Paul 2013-04-24 14:18:52