2014-06-17 81 views
0

我需要解析從YQL獲取的json,但是我遇到了麻煩,因爲我沒有得到我需要的結果。我正在使用簡單的json (https://code.google.com/p/json-simple/wiki/DecodingExamples)並試圖按照文檔。問題是他們展示的例子非常有限(我對json非常陌生)。我想提取數組中的所有內容(Sy,Date,O,H,L,C和V)。在本文檔中,他們展示瞭如何extarct從數組元素;如果JSON對象只是一個數組,但我對頂部的陣列+一些額外的東西:使用java解析json(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/

一般來說,你可以用jsonparser一塊一塊地分析json,或者用json將整個json轉換成一個對象。

+0

謝謝你的建議,我會看看吧! – user2924127