2014-02-18 3 views
2

У меня есть 2 ссылки; который дает json данные. Я пытаюсь получить значения из URL-адресов из той же активности в android, используя asynTask. сделал кодировку до преобразования данных в строку (сохранил ее в jsonStr1). Но теперь возникает проблема. Так, среди 2 URLs: один начинается с JSON объектномКак проверить объект JSON и массив

{ "contacts": [  {"id": "c200", "name": "Ravi Tamada" }, 

         { "id": "c201", "name": "Johnny Depp" } 
       ] 
} 

другой старт с JSON array-

[{"appeId":"1","survId":"1"}, 
    {"appeId":"2","survId":"32"} 
    ] 

Теперь, как я собираюсь дать условия для них ли знать сво JSON-массив или объект? Массив JSON - это объект, который я знаю, но не могу найти, как его разделить. Я попытался ниже:

JSONObject jsonObj = new JSONObject(jsonStr1); 
    if(jsonObj instanceof JSONArray){} 

но если условие показывает error- несовместимых типов операндов условного JSONObject и JSONArray

+0

Вы должны написать два разных анализатора JSON для каждого URL-адреса. Вы уже увидите, что вы ожидаете от объекта или массива. – Sharj

ответ

6

Вы можете просто использовать startsWith для строки, чтобы проверить, где строка начинается с { или [

boolean isJsonArray = jsonResponse.startsWith("["); 
if(isJsonArray){ 
    // Its a json array 
} 
else{ 
    // Its a json object 
} 
0

делает JSONObject и вызвать какое место и хотят называть

    jsonobject = JSONfunctions 
        .getJSONfromURL("http://ampndesigntest.com/androidapi/CURRENTPROJECTDATA/textfiles/hotels"); 

     try { 
      // Locate the array name in JSON 
      jsonarray = jsonobject.getJSONArray("worldpopulation"); 

      for (int i = 0; i < jsonarray.length(); i++) { 
       HashMap<String, String> map = new HashMap<String, String>(); 
       jsonobject = jsonarray.getJSONObject(i); 
       // Retrive JSON Objects 
       map.put("rank", jsonobject.getString("rank")); 
       map.put("country", jsonobject.getString("country")); 
       map.put("population", jsonobject.getString("population")); 
       map.put("flag", jsonobject.getString("flag")); 
      // map.put("latlongitude", jsonobject.getString("latlongitude")); 


       // Set the JSON Objects into the array 
       arraylist.add(map); 
      } 
     } catch (JSONException e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return null; 
0

Для этого вы можете использовать класс JSONTokener, вот пример кода для этого.

Object json = new JSONTokener(response).nextValue(); 
if (json instanceof JSONObject){ 
    JSONObject result = new JSONObject(response); 
} 
else if (json instanceof JSONArray){ 
    JSONArray resultArray = new JSONArray(response); 
} 
0

Вы можете использовать метод has(String), чтобы проверить, если JSONObject содержит или не ключевые контакты.

if(jsonOjbect.has("contacts") { 
    ... 
} 
else { 
    ... 
} 
Смежные вопросы