Pobieram ciąg JSON i konwertuję go na JSONArray. Umieszczam go w widoku listy i muszę mieć możliwość późniejszego usunięcia z tego widoku listy, a ponieważ JSONArray nie ma metody .remove (dzięki Obama), próbuję przekonwertować ją na listę arraylistyczną.
oto mój JSON (the 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"}]
Muszę umieścić go w tablicy i móc wywoływać ciągi za pomocą odpowiednich kluczy. Doceń każdą pomoc!
android
android-listview
TheGeekNess
źródło
źródło
Odpowiedzi:
źródło
listdata.add(jArray.optJSONObject(i));
jeśli twoje listdata to JSONObject arrayList.ArrayList<JSONObject> listdata = new ArrayList<JSONObject>();
ArrayList<Object>
?Zrobiłem to za pomocą
Gson
(przez Google) .Dodaj następujący wiersz do swojego modułu
build.gradle
:JSON
strunowy:ContactModel.java
:Kod do konwersji ciągu JSON na
ArrayList<Model>
:Uwaga: musisz zaimportować
java.lang.reflect.Type;
:Mam nadzieję, że to ci pomoże.
źródło
getAsJsonArray()
metody pozornie. Dziękuję Ci!spróbuj w ten sposób Po prostu przejrzyj to w pętli, budując własną tablicę. Ten kod zakłada, że jest to tablica ciągów, nie powinno być trudno ją zmodyfikować, aby pasowała do konkretnej struktury tablicy.
źródło
Zamiast konwertować ciąg JSON na ArrayList lub nawet Mapę, możesz po prostu utworzyć sam JSONObject . Ten obiekt ma możliwość pobierania wartości łańcuchowych według klucza , jak chcesz, a także do usuwania obiektów .
Aby utworzyć
JSONObject
z odpowiednio sformatowanego ciągu JSON, wystarczy wywołać odpowiedni konstruktor .źródło
Mam szybkie rozwiązanie. Po prostu utwórz plik
ArrayUtil.java
Stosowanie:
lub
źródło
ArrayList<String>
JSONArray
plik na listę, aby móc umieścićList
w aHashMap
, więc to narzędzie działało dla mnie całkiem dobrze. Dzięki @ Vasilii SuricovW Javie 8
źródło
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());
to, co nie jest już tak eleganckie. Więc pójdę z każdym :)źródło
Aby było to przydatne, użyj POJO.
spróbuj w ten sposób ..
źródło
Korzystanie z Gson
źródło
jeśli chcesz wyodrębnić dane z tablicy ciągów JSON, oto mój działający kod. zmień parametr jako swoje dane.
Klasa PoJo
Wyodrębnij swoje dane za pomocą poniższego wiersza kodu
zwróci ci listę obiektów klasy PoJo.
źródło
Styl Java 8
źródło
źródło
Mam szybkie rozwiązanie. Po prostu utwórz plik
ArrayUtil.java
Stosowanie:
lub
źródło
Wariant ogólny
źródło
@uproszczony
źródło
Przechodząc do pierwotnego tematu wątku:
konwertowanie tablicy jsonarray na listę (tutaj używana tablica jsonarray json i mapper obiektów):
źródło
Prostsza alternatywa dla Java 8:
źródło