Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android java解析JSON时遇到问题_Java_Android_Json - Fatal编程技术网

Android java解析JSON时遇到问题

Android java解析JSON时遇到问题,java,android,json,Java,Android,Json,我以前解析过一些简单的json,但这次给我带来了更多的麻烦。我试图从维基百科的“历史上的这一天”中获取数据 现在,如果将JSON URL弹出到: 为了得到一个细分,我遇到的第一点麻烦是在页面后面的对象之后,在这种情况下,“27993”将始终是不同的,因此,如果我不知道名称,我如何获取它 出于测试目的,目前为止我有以下代码: JSONObject json = new JSONObject(result); input.close(); JSONObject json2 = new J

我以前解析过一些简单的json,但这次给我带来了更多的麻烦。我试图从维基百科的“历史上的这一天”中获取数据

现在,如果将JSON URL弹出到: 为了得到一个细分,我遇到的第一点麻烦是在页面后面的对象之后,在这种情况下,“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();
这将返回修订数组中的所有内容,这将引出我的下一个问题…是否有一种简单的方法来解析该输出

EDIT:解决问题的修订代码#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]] “民兵”]“),是一支[哥特式]军队在 [[Ravenna]]后来在“古典”宫外处决 城市\n*[[1111]]——由[[Pedro]领导的加利西亚最高贵族 Fr\u00f3ilaz de Traba]]和主教[[Diego Gelm\u00edrez]]王冠 [[Le\u00f3n的阿方索七世和卡斯蒂利亚|阿方索七世]]作为\“[[王国] 加利西亚|加利西亚国王]]\“\n*[[1176]]–加利西亚之战 米里奥基法伦之战已打响。\n*[[1462]]–米里奥基法伦之战 \u015awiecino]](也称为\u017barnowiec之战)是一场战斗 在[[十三年战争(1454\u201366)|十三年' 战争].\n*[[1577].[[Bergerac的和平]]由双方签署 法兰西的亨利三世和胡格诺派 [[波士顿]市

JSONObject pages=新的JSONObject(json.getJSONObject(“pages”);
//使用此命令获取ID
迭代器键=pages.keys();
//然后迭代
while(keys.hasNext()){
JSONObject page=newjsonobject(pages.get(keys.next());
//对页面做些什么
}

我不明白你的第二个问题?解析输出。我只是想知道是否有一个简单的解决方案,因为它返回的是:“{{pp move indef}{{9月日历{124; float=right}}}\n{{ThisDateInRecentYears}\n{Day}\n\n==Events=\n*[[456]–罗马将军[[Remistus]](“[[magister militum]]”)在[[Ravenna]]被[[Goths |哥特式]]军队包围,随后在城外的“古典式”宫殿中被处决\n*[[1111]]–等等…谢谢,在你发布这篇文章之前,我确实从那个家伙发布的链接中编写了我自己的代码,但这也很有效!对解析输出有什么想法吗?
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
}