Я загружаю строку JSON и конвертирую ее в JSONArray. Я помещаю его в список, и мне нужно иметь возможность удалить из этого списка позже, и поскольку JSONArray не имеет метода .remove (спасибо Обаме), я пытаюсь преобразовать его в arrayylist.
вот мой JSON (array.toString ()):
[{"thumb_url":"tb-1370913834.jpg","event_id":"15","count":"44","event_tagline":"this is a tagline","event_name":"5th birthday","event_end":"1370919600","event_start":"1370876400"}]
Мне нужно поместить его в массив и иметь возможность вызывать строки по их соответствующим ключам. Ценю любую помощь!
android
android-listview
Гиковство
источник
источник
Ответы:
источник
listdata.add(jArray.optJSONObject(i));
если ваши списковые данные представляют собой JSONObject arrayList.ArrayList<JSONObject> listdata = new ArrayList<JSONObject>();
ArrayList<Object>
?Я сделал это с помощью
Gson
(от Google) .Добавьте в свой модуль следующую строку
build.gradle
:JSON
строка:ContactModel.java
:Код для преобразования строки JSON в
ArrayList<Model>
:Примечание. Вам необходимо импортировать
java.lang.reflect.Type;
:Надеюсь, что это поможет вам.
источник
getAsJsonArray()
метод по-видимому. Спасибо!попробуйте этот способ. Просто прокрутите это, создав свой собственный массив. Этот код предполагает, что это массив строк, который не составит труда изменить в соответствии с вашей конкретной структурой массива.
источник
Вместо преобразования строки JSON в ArrayList или даже в Map вы можете просто создать сам JSONObject . Этот объект имеет возможность получать строковые значения по ключу , как вы хотите, а также удалять объекты .
Чтобы создать
JSONObject
из правильно отформатированной строки JSON, вы просто вызываете соответствующий конструктор .источник
У меня есть быстрое решение. Просто создайте файл
ArrayUtil.java
Использование:
или
источник
ArrayList<String>
JSONArray
в список, чтобы я мог поместить егоList
вHashMap
, поэтому эта утилита сработала для меня очень хорошо. Спасибо @Vasilii SuricovВ Java 8
источник
List<String> listOfStrings = IntStream.range(0, array.length()).mapToObj(i -> { try { return array.getString(i); } catch (JSONException e) { throw new AssertionFailedError("JSONArray is not a list of Strings! " + e.getMessage()); } }).collect(Collectors.toList());
получаете то, что уже не так элегантно. Так что я буду использовать foreach :)источник
Чтобы было удобно, используйте POJO.
попробуйте вот так ..
источник
Использование Gson
источник
Если вы хотите извлечь данные из массива строк JSON, вот мой рабочий код. измените параметр как ваши данные.
PoJo класс
Извлеките свои данные, используя приведенную ниже строку кода
он вернет вам список объектов класса PoJo.
источник
Стиль Java 8
источник
источник
У меня есть быстрое решение. Просто создайте файл
ArrayUtil.java
Использование:
или
источник
Общий вариант
источник
@simplified
источник
Просто пройдя по исходной теме обсуждения:
преобразование jsonarray в список (здесь используется jsonarray и объектный сопоставитель jackson):
источник
Более простая альтернатива Java 8:
источник