2013-02-19 12 views
8

Pracuję nad projektem, w którym muszę wyczyścić wszystkie dane z tablicy JSON. Wydaje się, że nie ma metody takiej jak jsonArray.clear(). Wypróbowano także jsonArray = new JSONArray(). To też nie zadziałało. Sugestie:Jak wyczyścić dane z macierzy JSON

+4

dlaczego nie * jsonArray = new JSONArray() * działa? – thang

Odpowiedz

8

Po prostu utwórz nową JSONArray.

JSONArray otherJsonArray = new JSONArray(); 

Lub iteruj po tablicy i remove(int index) indeksy.

http://www.json.org/javadoc/org/json/JSONArray.html#remove(int)

+0

Ale nie ma metody remove (int) dla JSONArray. Moje IDE tego nie pokazuje. Używam narzędzia programistycznego Android (Eclipse) – Joseph

+0

Nie ma metody "remove" na JSONArray? Nie jest statyczny, więc nie jest to zaskakujące. Jest to metoda instancji, byłaby to 'jsonArray.remove()'; chyba że nie używasz tego samego obiektu org.json.JSONArray? – Anew

+0

Używam obiektu org.json.JSONArray. Zmieniłem ten obiekt na statyczny i nadal nie mam metody remove() – Joseph

1

i używasz że otherJsonArray już istniejących wówczas użyć

JSONArray otherJsonArray = new JSONArray("[]"); 
1

utworzenie nowego będzie działać, chyba że minęło go jako parametr do metody, w którym to przypadku trzeba zmodyfikować obiekt odniesienia, ponieważ nowe odwołanie nie będzie widoczne dla metody wywołującej.

Więc jeśli tak jest, to zrobić w tył, w ten sposób nie będzie zdobycie iteracyjnej przekroczenia granic:

int startingLength = someJsonArray.length(); 

    for (int i = startingLength - 1; i >= 0; i--) { 

     someJsonArray.remove(i); 

    } 
3

Wystarczy umieścić jsonArray = new JSONArray()

0

Możemy użyć someJsonArray.pop (indeks) aby usunąć wymagany rekord. Możemy użyć tego kodu w pętli, aby usunąć wszystkie rekordy.

Powiązane problemy