2014-06-17 3 views
0

Мне нужно разобрать json, который я получаю от YQL, но у меня возникают проблемы, так как я не получаю результаты, которые мне нужны. Я использую простой json (https://code.google.com/p/json-simple/wiki/DecodingExamples) и пытаюсь следовать документации. Проблема заключается в том, что они показывают, что они очень ограничены (я очень новичок в json). Я хочу извлечь все в массив (Sy, Date, O, H, L, C и V). В документации они показывают, как extarct элементы из массива, если объект JSON просто как массив, но у меня есть массив + некоторый дополнительный материал на вершине:parse json using java (simplejson)

{"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"} 
     ]}}} 

ответ

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

Вам необходимо извлечь массив, в котором вы нуждаетесь, по частям.

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, который написан google. Он может напрямую конвертировать json в объект, а это значит, что вам не нужно постепенно вводить массив внутри json. https://code.google.com/p/google-gson/

Вообще говоря, вы можете использовать gson для разбора json по частям с помощью jsonparser или, конвертировать весь json в объект с gson.

+0

Спасибо за совет, я должен буду смотреть на это! – user2924127