2013-09-27 5 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\" 
    } 
} 

Или DATA должны быть 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

Надеется, что это может помочь.

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