2017-01-21 3 views
0

У меня есть следующие JSON:Как Разобрать JSON, который содержит те же самые ключевые имена

[ 
{"hex":"3443d3", "squawk":"4673", "flight":"VLG3014 ","lat":37.716344, "lon":-2.913646, "validposition":1, "altitude":35000,"vert_rate":0,"track":225, "validtrack":1,"speed":427, "messages":74, "seen":0}, 
{"hex":"345313", "squawk":"3767", "flight":"VLG2422 ", "lat":37.573568, "lon":-2.912750, "validposition":1, "altitude":38000, "vert_rate":0,"track":72, "validtrack":1,"speed":420, "messages":1217, "seen":0} 
] 

Код является следующее:

@Override 
protected String doInBackground(String... strings) { 

    try { 
     socket=new Socket("172.24.1.1",9000); 
     System.out.println("CONECTED"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    try { 
     br = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
     System.out.println("BufferedReader READY"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    int i=0; 
    while(i==0) { 
     try { 
      System.out.println("WAITING FOR MESSAGE"); 
      inputString=br.readLine(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     try { 
      if(inputString!=null) { 
       jsonString = new JSONObject(inputString); 
       System.out.println(parseJSON(jsonString)[0]); 
      } 
     } catch (JSONException e) { 
      //e.printStackTrace(); 
     } 

    } 

    return null; 
} 

private String[] parseJSON(JSONObject jsonObject) throws JSONException { 
    String hex = jsonObject.getString("hex"); 
    String squawk = jsonObject.getString("squawk"); 
    String flight = jsonObject.getString("flight"); 
    String lat = jsonObject.getString("lat"); 
    String lon = jsonObject.getString("lon"); 
    String validposition = jsonObject.getString("validposition"); 
    String altitude = jsonObject.getString("altitude"); 
    String vert_rate = jsonObject.getString("vert_rate"); 
    String track= jsonObject.getString("track"); 
    String validtrack = jsonObject.getString("validtrack"); 
    String speed = jsonObject.getString("speed"); 
    String messages = jsonObject.getString("messages"); 
    String seen = jsonObject.getString("seen"); 

    String[] answer={hex,squawk,flight,lat,lon,validposition,altitude,vert_rate,track,validtrack,speed,messages,seen}; 
    return answer; 
} 

я получаю весь JSON в моем приложении. Когда я получаю «hex», я получаю код 345313. Я хочу иметь вектор «hex» с обоими значениями, мой вопрос: Как получить оба значения без использования для цикла? Есть ли какой-либо метод JSON для получения обоих одновременно и сохранения в массиве?

+1

Что вы используете для разбора JSON? 'JSONArray'? 'JsonReader'? Gson? Джексон? Moshi? Что-то другое? – CommonsWare

+0

Это JSONArray, затем вы получаете доступ к элементу 'array [iterator] .yourElement'. Например: 'array [0] .hex'. –

+0

используйте Gson, перейдите по этой ссылке https://guides.codepath.com/android/Leveraging-the-Gson-Library –

ответ

1

У вас есть JSONArray по вашему вопросу, не JSONObject

Если вы не хотите, без петель, вы можете получить оба элемента JSONObject от индексации массива с помощью getJSONObject(0) и getJSONObject(1). Очевидно, что петля лучше.

Тогда просто используйте getString("hex") для обоих объектов, как вы уже сделали, чтобы получить тот же ключ для обоих.

+0

Не знаю, почему он хочет избежать цикла for, чтобы это сделать. Я, хотя, регистрирую пользовательский StringTypeAdapter, который просто извлекал этот «hex», но кажется неприятным. Я удалил свой ответ. – AnixPasBesoin

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