Ich habe eine ArrayList, die ich in einem ArrayAdapter für eine ListView verwende. Ich muss die Elemente in der Liste nehmen und sie in ein JSONArray konvertieren, um sie an eine API zu senden. Ich habe mich umgesehen, aber nichts gefunden, was erklärt, wie dies funktionieren könnte. Jede Hilfe wäre willkommen.
UPDATE - LÖSUNG
Folgendes habe ich getan, um das Problem zu lösen.
Objekt in ArrayList:
public class ListItem {
private long _masterId;
private String _name;
private long _category;
public ListItem(long masterId, String name, long category) {
_masterId = masterId;
_name = name;
_category = category;
}
public JSONObject getJSONObject() {
JSONObject obj = new JSONObject();
try {
obj.put("Id", _masterId);
obj.put("Name", _name);
obj.put("Category", _category);
} catch (JSONException e) {
trace("DefaultListItem.toString JSONException: "+e.getMessage());
}
return obj;
}
}
So habe ich es konvertiert:
ArrayList<ListItem> myCustomList = .... // list filled with objects
JSONArray jsonArray = new JSONArray();
for (int i=0; i < myCustomList.size(); i++) {
jsonArray.put(myCustomList.get(i).getJSONObject());
}
Und die Ausgabe:
[{"Name":"Name 1","Id":0,"Category":"category 1"},{"Name":"Name 2","Id":1,"Category":"category 2"},{"Name":"Name 3","Id":2,"Category":"category 3"}]
Hoffe das hilft jemandem eines Tages!
Verwenden Sie die Gson-Bibliothek, um ArrayList in JsonArray zu konvertieren.
quelle
Wenn jemand herausfindet, dass das OP eine benutzerdefinierte Liste in eine
org.json.JSONArray
nicht konvertieren möchtecom.google.gson.JsonArray
, sollte die RICHTIGE Antwort folgendermaßen lauten:quelle
quelle
Ich weiß, dass es bereits beantwortet wurde, aber es gibt eine bessere Lösung. Verwenden Sie diesen Code:
Auf diese Weise können Sie auf Variablen aus der Klasse zugreifen, ohne sie manuell eingeben zu müssen.
Schneller und besser .. Hoffe das hilft.
Prost. : D.
quelle
Fügen Sie Ihrem Gradle hinzu:
Konvertieren
ArrayList
inJsonArray
quelle
Mit Kotlin und Gson können wir das einfacher machen:
kotlin
Datei und fügen Sie die folgenden Methoden hinzuHinweis: Fügen Sie keine Deklarationsklasse hinzu, sondern nur diese Methoden. Alles funktioniert einwandfrei.
Erstellen Sie eine Referenz von Gson:
Um ein Array in einen JSON-String zu konvertieren, rufen Sie Folgendes auf :
Um ein Array von einem JSON-String abzurufen, rufen Sie Folgendes auf :
Um ein Modell in einen JSON-String zu konvertieren, rufen Sie Folgendes auf:
Rufen Sie zum Konvertieren eines JSON-Strings in ein Modell Folgendes auf:
quelle