2015-11-03 61 views
1

我有一個像Java的JSON返回數組作爲值

{ 
    "endtime": 1446188340, 
    "interval": 60, 
    "metrics": { 
     "heartrate": { 
      "values": [ 
       88, 
       92, 
       88, 
       89, 
       86, 
       84, 
       82, 
       86, 
       97, 
       77, 
       81, 
       87, 
       83, 
       101, 
       96, 
       97, 
       123, 
       123, 
       127, 
       127, 
       127, 
       130, 
       134, 
       133, 
       129, 
       126, 
       121, 
       137, 
       141, 
       149, 
       144, 
       120, 
       104, 
       102, 
       100, 
       107, 
       116, 
       107, 
       98, 
       97, 
       115, 
       107, 
       106, 
       98 
      ] 
     } 
    }, 
    "starttime": 1446102000, 
    "timezone_history": [ 
     { 
      "offset": -7, 
      "start": 1446102000, 
      "timezone": "America\/Los_Angeles" 
     } 
    ] 
} 

一個JSON對象,我該如何獲得心率數據,在「值」的數組?

如果我打印:

JSONObject a = new JSONObject(obj.getJSONObject("metrics").getJSONObject("heartrate")); 

我只是得到:

{} 

它似乎JSONArray是不是要麼使用了正確的事情。我只想獲得一系列我可以使用的雙打。謝謝!

回答

0

我想這應該做的工作:

JSONObject main = new JSONObject(MyJsonString); 
JSONArray values = main.getJSONObject("metrics") 
        .getJSONObject("heartrate").getJSONArray("values"); 
2

JSON經驗法則:


  • '['表示JSONArray節點的開始

  • '{'代表JSONObject

如果你的JSON節點與[開始,那麼我們應該使用getJSONArray()方法。而如果節點以{開頭,那麼我們應該使用getJSONObject()方法。

這裏是代碼即可獲得雙精度值

public static ArrayList<Double> getHeartRates(String jsonString) throws JSONException { 
      ArrayList<Double> values = new ArrayList<>(); 
      // root JSON Object. 
      JSONObject jsonObject = new JSONObject(jsonString); 

      JSONObject metrics = jsonObject.getJSONObject("metrics"); 
      JSONObject heartRate = metrics.getJSONObject("heartrate"); 
      JSONArray valuesArray = heartRate.getJSONArray("values"); 

      for (int i = 0; i < valuesArray.length(); i++) {          
       values.add(valuesArray.getDouble(i)); 
      } 

      return values; 
     } 
+0

謝謝您的解決方案。那時我想知道你能否爲我解決一些問題。 我以爲JSON數組是JSON對象的數組,所以像[「key1」:value,「key2」:value,「key3」:value]。但我所擁有的是一個JSON對象,其值是一個數組,如「key1」:[1,2,3]。你爲什麼要調用[1,2,3] JSONArray?謝謝! – swagrov