我需要解析我从YQL获得的json但是我遇到了麻烦,因为我没有得到我需要的结果。我使用简单的json (https://code.google.com/p/json-simple/wiki/DecodingExamples)并尝试按照文档。问题是他们展示的例子非常有限(我对json很新)。我想提取数组中的所有内容(Sy,Date,O,H,L,C和V)。在文档中,如果json对象就像一个数组那样,它们展示了如何从数组中取出元素,但是我有一个数组+顶部的一些额外的东西:
{"query"
{"count":200,"created":"2014-06-17T00:46:43Z","lang":"en-GB","results"
这是完整的json对象,我将如何只提取数组?
{"query"
{"count":200,"created":"2014-06-17T00:46:43Z","lang":"en-GB","results"
{"array":[{"Sy":"Y","Date":"2010-03-10","O":"16.51","H":"16.94","L":"16.51","C":"16.79","V":"33088600"},
{"Sy":"Y","Date":"2010-03-09","O":"16.41","H":"16.72","L":"16.40","C":"16.53","V":"20755200"},
{"Sy":"Y","Date":"2010-03-08","O":"16.32","H":"16.61","L":"16.30","C":"16.52","V":"30554000"}
]}}}
答案 0 :(得分:2)
我使用https://code.google.com/p/org-json-java/downloads/list
这很简单
try{
String json = "JSON source";
JSONObject j = new JSONObject(json);
JSONArray arr = j.getJSONObject("query").getJSONObject("results").getJSONArray("array");
for(int i=0; i<arr.length(); i++){
JSONObject obj = arr.getJSONObject(i);
String sy = obj.getString("Sy");
String date = obj.getString("Date");
String o = obj.getString("O");
String h = obj.getString("H");
String l = obj.getString("L");
String c = obj.getString("C");
String v = obj.getString("V");
}
}
catch(JSONException e){
}
答案 1 :(得分:1)
您必须逐个提取所需的阵列。
JSONParser parser=new JSONParser();
String s="{YOUR_JSON_STRING}";
JSONArray array=parser.parse(s).get("query") //"query"
.get("result") // "query->result"
.get("array"); // THE array you need
请注意,您可能需要使用try...catch...
块来处理异常。
由于您使用的是java,我强烈推荐gson,它是由谷歌编写的。它可以直接将json转换为对象,这意味着您不需要逐步将数组深入到json内部。 https://code.google.com/p/google-gson/
一般来说,你可以使用gson与jsonparser一块一块地解析json,或者将整个json转换为带有gson的对象。