2017-02-17 3 views
-2

У меня есть проблема прочитать added_cards на этом формате JSONСинтаксический JSON-закодирован объект на Android

{ 
    "result":[ 
     { 
     "descriptor": 805336478, 
     "start_time": 1487138400, 
     "extra_type_info": 0, 
     "added_cards": "{\"event\": [100355, 300347]}", 
     "end_time": 1487224799, 
     "event_name": "タイプセレクトガシャ" 
     }, ... 
    ] 
} 

Я пытаюсь прочитать содержимое массива, как этот

JSONObject cards = resultObject.getJSONObject("added_cards"); 
tConventional.setText(cards.getString("event")); 

Но он показал ошибку (Value { «event»: [300351, 300353]} в файлах добавленных типов java.lang.String не может быть преобразовано в JSONObject)

Итак, как получить содержимое этого массива?

+0

является 'cards' действительный JSONObject? Затем вы должны использовать JSONArray, если я не ошибаюсь, потому что 'event' является массивом JSON. –

+0

added_cards - ваша строка json, поэтому вы должны получить ее как String cards = resultObject.getString ("added_cards"); –

+0

Может быть, над комментарием по редактированию поможет вам. –

ответ

0

result является массивом JSON, чтобы разобрать его сделать следующее:

JSONArray result = mainJSON.getJSONArray("result"); //mainJSON is ur complete JSON object 
    for(int i = 0; i<result.length(); i++){ 
     JSONObject resultObject = result.getJSONObject(i); 
     String added_cards = resultObject.getString("added_cards"); 

     //Now, parsing this SubJSON 
     JSONObject eventJSON = new JSONObject(added_cards); //I hope this line works 
     JSONArray eventArray = eventJSON.getJSONArray("event"); 
     for(int j = 0; j<eventArray.length(); j++){ 
      JSONObject eventObject = eventArray.getJSONObject(j); 
      tConventional.setText(eventObject.getString(String.valueOf(j))); 
     } 
    } 
+0

Решила ответить. Но с небольшим изменением в eventObject. Спасибо – GSculerlor

+0

@GSculerlor добро пожаловать –

0

Поскольку результатом является JSONArray, а также в added_cardsJSONObject событие значение также JSONArray, это не String тип

Try ниже код:

try { 
     JSONArray resultArray = jsonObject.optJSONArray("result"); 
     if (resultArray != null) { 
      int size = resultArray.length(); 
      for (int i = 0; i < size; i++) { 
       JSONObject resultObject = resultArray.getJSONObject(i); 
       String cards = resultObject.optString("added_cards"); 
       if (!cards.equals("")) { 
        JSONObject addedCardsJson = new JSONObject(cards); 
        JSONArray eventArray = addedCardsJson.optJSONArray("event"); 
        if (eventArray != null) { 
         int eventSize = eventArray.length(); 
         ArrayList<Integer> eventsList = new ArrayList<>(); 
         for (int j = 0; j < eventSize; j++) { 
          eventsList.add(eventArray.optInt(j)); 
         } 
         String eventsText= TextUtils.join(",", eventsList); 
         tConventional.setText(eventsText); 
        } 
       } 
      } 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
Смежные вопросы