2016-03-31 4 views
-2

Я пытаюсь поместить этот объект JSON в свой список в Android, но у меня проблема с несоответствием json.Проблема с размещением Android JSON

Это выход моего сервера JSON:

{"Patient 0": 
{"firstName":"admir","lastName":"andrade","email":"[email protected]"}, 
    "Patient 1": 
{"firstName":"alden","lastName":"andrade","email":"[email protected]"}} 

В моем андроиде коды, у меня есть следующий код:

JSONObject object = new JSONObject(result); 

Как я могу обновил свой список и с информацией пациентов без вызывать каждый объект один раз (если их много, я не знаю, как это сделать)? Что мне нужно сделать дальше, чтобы обновить список ListView с двумя столбцами, один для имени и фамилии, а другой с электронной почтой, так как вывод JSON формируется на сервере? Есть лучший способ сделать это?

+0

Я нет я вас понимаю. можете ли вы сказать, какова ваша точная проблема? –

+0

Преобразуйте свой json в ArrayList, используя библиотеку GSON. – Amy

+0

Вы имеете в виду библиотеку json? @Amy – Aboogie

ответ

1

Это прекрасно работает,

JSONObject jObject = new JSONObject(result.trim()); 
Iterator<?> keys = jObject.keys(); 

while(keys.hasNext()) { 
    String key = (String)keys.next(); 
    if (jObject.get(key) instanceof JSONObject) { 

     String firstName = ((JSONObject) jObject.get(key)).getString("firstName"); 
     String lastName = ((JSONObject) jObject.get(key)).getString("lastName"); 
     String email = ((JSONObject) jObject.get(key)).getString("email"); 

     Log.d("jsondata","Firstname = "+firstName+"\nlastname = "+lastName+"\nemail = "+email); 

    } 
} 

Update

Вот полные коды, которые я тестировал,

String result = "{\"Patient 0\":{\"firstName\":\"admir\",\"lastName\":\"andrade\",\"email\":\"[email protected]\"},\"Patient 1\":{\"firstName\":\"alden\",\"lastName\":\"andrade\",\"email\":\"[email protected]\"}}"; 

    JSONObject jObject = null; 
    try { 
     jObject = new JSONObject(result.trim()); 
     Iterator<?> keys = jObject.keys(); 

     while(keys.hasNext()) { 
      String key = (String)keys.next(); 
      if (jObject.get(key) instanceof JSONObject) { 

       String firstName = ((JSONObject) jObject.get(key)).getString("firstName"); 
       String lastName = ((JSONObject) jObject.get(key)).getString("lastName"); 
       String email = ((JSONObject) jObject.get(key)).getString("email"); 
       Log.d("jsondata","Firstname = "+firstName+"\nlastname = "+lastName+"\nemail = "+email); 
      } 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
+0

Это не работает для меня. Я получаю эту ошибку: org.json.JSONException: Конец ввода с символом 0 of; это тоже: на org.json.JSONTokener.syntaxError (JSONTokener.java:449) плюс еще – Aboogie

+0

может быть, вы получаете пустой ответ, повторите попытку и убедитесь, что получили данные json. –

+0

awesome Спасибо @Shree Krishna – Aboogie

0

Вы можете попробовать это ..

 String result ="{\"Patient 0\":\n" + 
      "{\"firstName\":\"admir\",\"lastName\":\"andrade\",\"email\":\"[email protected]\"},\n" + 
      " \"Patient 1\":\n" + 
      "{\"firstName\":\"alden\",\"lastName\":\"andrade\",\"email\":\"[email protected]\"}}"; 

    JSONObject data = null; 
    try { 
     data = new JSONObject(""+result); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    List<String> FName = new ArrayList<String>(); 

    for(int i=0 ; i<data.length();i++){ 

     try { 
      JSONObject innerData = data.getJSONObject("Patient "+i); 

      FName .add(innerData.getString("firstName")); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
Смежные вопросы