2015-10-25 2 views
0

Я пытаюсь разобрать JSON в ответАнализировать JSON ответ в список

это структура:

{ 
    "metric": { 
    "name": "string", 
    "values": [ 
     "string" 
    ] 
    } 
} 

Мой код до сих пор:

 StringBuilder sb = new StringBuilder(); 
     String line; 
     BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
     while ((line = reader.readLine()) != null) { 
      sb.append(line); 
     } 
     wr.close(); 
     reader.close(); 

     JSONObject json = new JSONObject(sb.toString()); 
     JSONArray jsonArray = json.getJSONArray("values"); 
     List<String> list = new ArrayList<>(); 
     String errorPercent =""; 

     for(int i = 0 ; i < json.length() ; i++){ 
      errorPercent = jsonArray.getJSONArray(i).getString(i); 
      list.add(errorPercent); 
     } 

Выход Я получение говорит о том, что «значения» не были найдены,

Я не понимаю структуру ответа JSON?

Редактировать

Оказывается, структура я был дан на сайте я получаю ответ от не правильно. это, как представляется, более сложной структурой

Я изменил мой код соответственно:

  JSONObject json = new JSONObject(sb.toString()); 
      JSONObject metricsData = json.getJSONObject("metric_data"); 
      JSONArray metrics = metricsData.getJSONArray("metrics"); 
      System.out.println(metrics.toString()); 

Печать вне следующим образом:

[{"timeslices":[{"values":{"max_response_time":0,"calls_per_minute":0,"average_be_response_time":0,"error_percentage":0,"min_response_time":0,"requests_per_minute":0,"average_network_time":0,"average_response_time":0,"average_fe_response_time":0,"total_app_time":0,"call_count":0,"fe_time_percentage":0,"total_network_time":0,"total_fe_time":0,"network_time_percentage":0},"from":"2015-10-25T22:39:00+00:00","to":"2015-10-25T22:40:00+00:00"},{"values":{"max_response_time":0,"calls_per_minute":0,"average_be_response_time":0,"error_percentage":0,"min_response_time":0,"requests_per_minute":0,"average_network_time":0,"average_response_time":0,"average_fe_response_time":0,"total_app_time":0,"call_count":0,"fe_time_percentage":0,"total_network_time":0,"total_fe_time":0,"network_time_percentage":0}, 

Там, как представляется, другой массив в массиве: «таймлисы» - это так? как я могу получить этот массив?

я безуспешно пытался:

JSONArray timeslices = metrics.getJSONArray("timeslices"); 

ответ

2

values это поле внутри metric.

Вам нужно будет сначала получить объект metric, а затем заглянуть внутрь, что для values.

JSONObject metric = json.getJSONObject("metric"); 
JSONArray jsonArray = metric.getJSONArray("values"); 
+0

Спасибо за вашу помощь. У меня есть я немного дальше. Это мой первый опыт работы с JSON, если бы вы помогли мне с моим Редактированием, это было бы здорово. – Johntk

+0

Где: 'metric_data'? Это не в ваших словах. –

+0

BTW, я не большой поклонник движущихся ворот. Если у вас есть последующий вопрос, другой вопрос будет лучше, если это ответит на вопрос, как написано. –

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