2016-11-07 66 views
0

嗨,大家好,我有這個JSONObject我很難分析它。如何解析此JSONArray

這裏是JSON

{ 
    "query": { 
     "count": 2, 
     "created": "2016-11-07T15:29:47Z", 
     "lang": "en-US", 
     "results": { 
      "rate": [{ 
       "id": "USDINR", 
       "Name": "USD/INR", 
       "Rate": "66.7700", 
       "Date": "11/7/2016", 
       "Time": "3:27pm", 
       "Ask": "66.8000", 
       "Bid": "66.7700" 
      }, { 
       "id": "USDEUR", 
       "Name": "USD/EUR", 
       "Rate": "0.9060", 
       "Date": "11/7/2016", 
       "Time": "3:29pm", 
       "Ask": "0.9065", 
       "Bid": "0.9060" 
      }] 
     } 
    } 
} 

正如你可以看到上面有兩個「率」我想先「速率」存儲到字符串數組稱爲Result[0]和第二個「率」來Result[1]

在這裏,我在嘗試。

JSONObject object = new JSONObject(JSON); 

JSONObject rateObject = object.getJSONObject("rate"); 
JSONArray rateArray = rateObject.getJSONArray("Rate"); 
result[0] = rateArray.getString(0); 
result[1] = rateArray.getString(1); 

我知道也許我這樣做就像愚蠢。所以請幫助我。

回答

-1

試試這個:

JSONArray rateArray = new JSONObject(JSON) 
    .getJSONObject("query") 
    .getJSONObject("results") 
    .getJSONArray("rate"); 
result[0] = rateArray.getJSONObject(0).getString("Rate"); 
result[1] = rateArray.getJSONObject(1).getString("Rate"); 
+0

對不起仍然有困惑 –

+0

試圖澄清這個例子,你有什麼掙扎? – fafl

+0

你期望'rateArray [0]'做什麼? – njzk2

0

,以獲得陣列我想試試這個:

JSONObject object = new JSONObject(JSON); 
JSONObject rateObject = object.getJSONObject("results"); 
JSONArray rateArray = rateObject.getJSONArray("rate"); 

,然後使用一個用於讀取陣列中的所有對象:

int length = rateArray.length(); 
for (int i =0; i < length; i++){ 
    JSONObject rate = rateArray.getJSONObject(i); 
    String rateResult = rate.getString("Rate"); 
} 
0

您格式化的JSON看起來像這樣

{ 
    "query":{ 
     "count":2, 
     "created":"2016-11-07T15:29:47Z", 
     "lang":"en-US", 
     "results":{ 
     "rate":[ 
      { 
       "id":"USDINR", 
       "Name":"USD/INR", 
       "Rate":"66.7700", 
       "Date":"11/7/2016", 
       "Time":"3:27pm", 
       "Ask":"66.8000", 
       "Bid":"66.7700" 
      }, 
      { 
       "id":"USDEUR", 
       "Name":"USD/EUR", 
       "Rate":"0.9060", 
       "Date":"11/7/2016", 
       "Time":"3:29pm", 
       "Ask":"0.9065", 
       "Bid":"0.9060" 
      } 
     ] 
     } 
    } 
} 

要獲得rate陣列則必須將此

JSONObject jsonObject = new JSONObject(jsonString); 
JSONArray rateArray = jsonObject.getJSONObject("query").getJSONObject("results").getJSONArray("rate"); 

然後查詢rate陣列這樣

JSONObject rateJSON = (JSONObject)rateArray.get(index); 
String id = rateJSON.getString("id"); //Or any other field of rate 
+0

這是說不能解決符號索引:( –

+0

索引替換爲0或1等取決於您的速率數組的大小。 –

+0

替換爲1現在說它的不兼容類型是必需的:org.json.JSONObject found:java.lang.obj –

0

安東尼, 你需要從根元素(查詢)去「率「節點:

JSONArray rates = object.getJSONObject("query").getJSONObject("results").getJSONArray("rate") 

result[0] = rates.getJSONObject(0).get("Rate") 
result[1] = rates.getJSONObject(1).get("Rate") 
0

您需要這樣做

JSONObject jsonObj = new JSONObject(jsonString); 

JSONObject queryObj = jsonObj.getJSONObject("query"); 
JSONObject resultObj = queryObj.getJSONObject("results"); 
JSONArray rateArr = resultObj.getJSONArray("rate"); 

result[0] = rateArr.getJSONObject(0).getString("Rate"); 
result[1] = rateArr.getJSONObject(1).getString("Rate");