Найти индекс элемента в JSONArray

1

Я получаю JSONObject с сервера, который выглядит следующим образом:

{
   "opOutput":{
      "DISPLAY_VALUES":[
         "Acceptance",
         "Arrive Load Port",
         "Arrive Receipt Point",
         "Arrive Relay Port",
         "Arrive Terminal",
         "Arrived at Delivery Location",
         "Arrived at Pickup Location",
         "Arrived Intermodal Train",
         "At Customs",
         .
         .
         .
         .  


      ],
      "VALUES":[
         "ACCPT",
         "ALPT",
         "ARRP",
         "ARREL",
         "ATRM",
         "QARD",
         "ARPUL",
         "AIMTRN",
         "K",
         .
         .
         .
         .
      ]
   },
   "_returnValue":{
      "TX_TYPE":"SHIPMENT",
      "__DeltaStatus":2,
      "ORG_CODE":"GFM",
      "TX_ID":"11019082"
   },
   "_returnType":"SUCCESS"
}

Теперь мне нужно получить отображаемое значение для s String s, которое равно одному из значений. т.е. у меня есть строка "ACCPT", и мне нужно получить "Acceptance" из JSONObject.

Я сделал два JSONArrays с DISPLAY_VALUES и VALUES с помощью

JSONObject opoutput=shipmentcodes.getJSONObject("opOutput");
JSONArray event_values=opoutput.getJSONArray("DISPLAY_VALUES");
JSONArray event_codes=opoutput.getJSONArray("VALUES");

где коды пересылки - это оригинальный JSONObject, но я не уверен, как действовать дальше. Какие-нибудь советы?

  • 2
    Почему вы не можете просто перебрать JSONArray, посчитать индекс и остановиться, когда найдете совпадение?
  • 0
    Перебирайте массив VALUES в цикле for, пока не найдете совпадение, и используйте этот индекс, чтобы получить правильное отображаемое значение из DISPLAY_VALUES.
Показать ещё 1 комментарий
Теги:
arrays

1 ответ

2
Лучший ответ

Добавьте значения из JSONArray в List и используйте метод indexOf

JSONArray event_values = opoutput.getJSONArray("DISPLAY_VALUES");
JSONArray event_codes = opoutput.getJSONArray("VALUES");

List<String> valueList = new ArrayList<String>();
List<String> displayList = new ArrayList<String>();
for(int i=0;i<event_codes.length();i++){
        // if both event_values and event_codes are of equal length
        valueList.add(event_codes.getString(i));
        displayList.add(event_values.getString(i));
    }

int index = valueList.indexOf("ACCPT");
String valueToDisplay = displayList.get(index);

Затем вы можете использовать valueToDisplay для отображения необходимого вам значения.

  • 0
    Я пытаюсь решить подобную проблему, может взглянуть на этот вопрос stackoverflow.com/questions/34151997/…

Ещё вопросы

Сообщество Overcoder
Наверх
Меню