2016-11-07 77 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");