2013-09-27 71 views
-3

如何通過JSON對象中的鍵獲取值?我使用了以下代碼,但它收到"org.json.JSONException"。提前感謝您的幫助。如何通過鍵從JSON對象獲取值?

String resultJSON = "{Data:[{\"AreaID\":\"13\", \"Phone\":\"654321\", \"RegionName\":\"Sivakasi\"}, {\"AreaID\":\"14\", \"Phone\":\"12345\", \"RegionName\":\"ANJAC\"}]}"; 
       JSONObject jObject = new JSONObject(resultJSON); 
        JSONObject jsonObject = jObject.getJSONObject("Data"); 


Map<String,String> map = new HashMap<String,String>(); 
      Iterator iter = jsonObject.keys(); 
      while(iter.hasNext()){ 
       String key = (String)iter.next(); 
       String value = jsonObject.getString(key); 
       map.put(key,value); 
       Log.d("Key Value","key: "+key+" Value: "+value); 
      } 

logcat的細節

org.json.JSONException: Value [{"AreaID":"13","Phone":"654321","RegionName":"Sivakasi"},{"AreaID":"14","Phone":"12345","RegionName":"ANJAC"}] at Data of type org.json.JSONArray cannot be converted to JSONObject 
+0

你可以發佈logcat輸出嗎? –

+0

究竟是什麼例外? –

+0

這不是有效的JSON。 –

回答

6

您的JSON的結構是錯誤的,你應該使用第二JSONObject一個關鍵,像這樣:

{ 
    Data: { 
     \"AreaID\": \"13\", 
     \"Phone\": \"654321\", 
     \"RegionName\": \"Sivakasi\" 
    }, 
    \"KEY\": { 
     \"AreaID\": \"14\", 
     \"Phone\": \"12345\", 
     \"RegionName\": \"ANJAC\" 
    } 
} 

或數據應該是JSONArray(被[]包圍)像這樣:

{ 
    Data: [ 
     { 
      \"AreaID\": \"13\", 
      \"Phone\": \"654321\", 
      \"RegionName\": \"Sivakasi\" 
     }, 
     { 
      \"AreaID\": \"14\", 
      \"Phone\": \"12345\", 
      \"RegionName\": \"ANJAC\" 
     } 
    ] 
} 

注:你可以檢查,如果你的JSON是有效還是無效here

Personnaly,我偏向於第二種方法(使用JSONArray),其中,因爲裏面的數據具有相同的屬性(areaID表示,電話,REgionName) 。在這種情況下解析數據,你的代碼應該是這樣的:

String resultJSON = "{Data:[{\"AreaID\":\"13\", \"Phone\":\"654321\", \"RegionName\":\"Sivakasi\"}, {\"AreaID\":\"14\", \"Phone\":\"12345\", \"RegionName\":\"ANJAC\"}]}"; 
       JSONObject jsonRoot = new JSONObject(resultJSON); 
        JSONArray jsonData = jsonRoot.getJSONArray("Data"); 
    for(int i=0; i<jsonData.lenght;i++) { 
     JSONObject jsonOBject = jsonData.getJSONObject(i); 
     Log.d(TAG, "json ("+i+") = "+jsonOBject.toString()); 
     // do what you want with your JSONObject , i.e :add it to an ArrayList of paresed result 
     String areaID = jsonOBject.getString("AreaID"); 
     int phoneNumber = jsonOBject.getInt("Phone"); 
     String regionName = jsonOBject.getString("RegionName"); 
    } 
+0

是的,這是我的錯誤。現在我已經更新了我的問題 – Sakthimuthiah

+0

@Sakthimuthiah:我也更新了我的答案,您想從您的JSON中檢索哪個值? – Houcine

+0

非常感謝。它的工作 – Sakthimuthiah

1

這是無效的JSON格式。在將字符串轉換爲JSON對象格式之前,請確定它是否有效。

請檢查您的JSON的有效期從link

希望對大家有所幫助。