簡體   English   中英

Android Java解析JSON時遇到麻煩

[英]Android java trouble parsing JSON

我過去解析過一些簡單的json,但這給我帶來了更多麻煩。 我正在嘗試從Wikipedia的“歷史上的這一天”獲取數據

帶有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();

問題的第二部分是解析此類輸出的簡單解決方案。 這是一個片段:

“:” {{pp-move-indef}} {{9月日歷| float = right}} \\ n {{ThisDateInRecentYears}} \\ n {{Day}} \\ n \\ n == Events == \\ n * [[ 456]] – [[Remistus]],羅馬將軍(“ [[magister militum]]''),在[[Ravenna]]受[[Goths | Gothic]]力[[Siege | beiege]] d后來在城外的“ Classis”宮被處死。 \\ n * [[1111]] –由[[Pedro Fr \\ u00f3ilaz de Traba]]和主教[[Diego Gelm \\ u00edrez]]冠冕的最高加利西亞貴族[[Le \\ u00f3n的阿方索七世和卡斯蒂利亞|阿方索七世] \\ n * [[1176]] –戰斗了[[Myriokephalon戰斗]。\\ n * [[1462]] –的[[]]表示為\\“ [[加里西亞王國|加里西亞國王]] \\”。 \\ u015awiecino之戰](也稱為\\ u017barnowiec之戰)是在[[十三年戰爭(1454 \\ u201366)|十三年戰爭]]期間進行的。\\ n * [[1577]] – [[ [[法國亨利三世]和[[胡格諾派]]之間簽署了伯傑拉克和平]。\\ n * [[1630]] – [[波士頓]]

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM