2016-03-31 38 views
-2

我想把這個JSON對象放在我的ListView中的android,但我有一個JSON不匹配的問題。JSON對象Android放置問題

這是我的服務器JSON的輸出:

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

在我的Android代碼,我有以下代碼:

JSONObject object = new JSONObject(result); 

我怎樣才能更新我的名單有兩個病人信息,而不必調用每個對象一次(如果有很多,我不知道該怎麼做)?我需要做什麼來進一步更新我的列表視圖有兩列,一列用於名和姓,另一列用電子郵件,因爲服務器顯示的JSON輸出?有一個更好的方法嗎?

+0

我不是不瞭解你..你能告訴你什麼是確切的問題嗎? –

+0

使用GSON庫將你的json轉換成ArrayList。 – 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); 

    } 
} 

更新

這裏是我測試的完整代碼,

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的輸入結束;這也是:在org.json.JSONTokener.syntaxError(JSONTokener.java:449)加上更多 – Aboogie

+0

可能是你得到空白的響應,再試一次,並確保你收到了json數據。 –

+0

真棒謝謝@Shree克里希納 – 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(); 
     } 
    }