2015-11-03 4 views
1

У меня есть объект JSON, как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" 
     } 
    ] 
} 

Как бы я получить массив данных HeartRate под «ценности»?

Если я печатаю:

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().

Вот код, чтобы получить двойной Values ​​

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

Смежные вопросы