Ich möchte Nachrichten in Form von JSON-Objekten an einen Server senden und die JSON-Antwort vom Server analysieren.
Beispiel eines JSON-Objekts
{
"post": {
"username": "John Doe",
"message": "test message",
"image": "image url",
"time": "current time"
}
}
Ich versuche, den JSON manuell zu analysieren, indem ich Attribut für Attribut gehe. Gibt es eine Bibliothek / ein Dienstprogramm, mit dem ich diesen Prozess vereinfachen kann?
Antworten:
Ich bin überrascht, dass diese nicht erwähnt wurden: Aber anstatt mit dem kleinen Paket von json.org einen manuellen Prozess zu verwenden, sind GSon und Jackson viel bequemer zu bedienen. So:
Sie können also tatsächlich an Ihre eigenen POJOs binden, nicht an einige halbherzige Baumknoten oder Listen und Karten. (und zumindest erlaubt Jackson auch das Binden an solche Dinge (vielleicht auch GSON, nicht sicher), JsonNode, Map, List, wenn Sie diese wirklich anstelle von "echten" Objekten wollen)
EDIT 19-MAR-2014:
Ein weiterer neuer Anwärter ist die Jackson jr- Bibliothek: Sie verwendet den gleichen schnellen Streaming-Parser / Generator wie Jackson (
jackson-core
), aber der Datenbindungsteil ist winzig (50 KB). Die Funktionalität ist eingeschränkter (keine Anmerkungen, nur reguläre Java-Beans), aber die Leistung sollte schnell sein und der Initialisierungsaufwand (erster Aufruf) ist ebenfalls sehr gering. Daher ist es möglicherweise eine gute Wahl, insbesondere für kleinere Apps.quelle
Sie können org.json.JSONObject und org.json.JSONTokener verwenden . Sie benötigen keine externen Bibliotheken, da diese Klassen mit Android SDK geliefert werden
quelle
GSON ist am einfachsten zu verwenden und der richtige Weg, wenn die Daten eine bestimmte Struktur haben.
Laden Sie gson herunter .
Fügen Sie es den referenzierten Bibliotheken hinzu.
Code für die Postklasse
quelle
Dies ist die JsonParser-Klasse
Hinweis: DefaultHttpClient wird von SDK 23 nicht mehr unterstützt. Daher ist es ratsam, das Ziel SDK 21 mit diesem Code zu verwenden.
quelle
JSON hat eigentlich nichts zu bieten. Geschweifte Klammern stehen für "Objekte" (assoziative Arrays) und eckige Klammern für Arrays ohne Schlüssel (numerisch indiziert). Für die Arbeit mit Android gibt es fertige Klassen für das im SDK enthaltene (kein Download erforderlich).
Schauen Sie sich diese Klassen an: http://developer.android.com/reference/org/json/package-summary.html
quelle
Andere Antworten haben Jackson und GSON - die beliebten Add-On-JSON-Bibliotheken für Android - und json.org, das in Android enthaltene Bare-Bones-JSON-Paket, zur Kenntnis genommen.
Aber ich denke, es ist auch erwähnenswert, dass Android jetzt eine eigene JSON-API mit vollem Funktionsumfang hat.
Dies wurde in Honeycomb: API Level 11 hinzugefügt.
Dies umfasst
- android.util.JsonReader: docs und source
- android.util.JsonWriter: docs und source
Ich werde noch eine zusätzliche Überlegung hinzufügen, die mich zurück zu Jackson und GSON treibt: Ich habe es nützlich gefunden, Bibliotheken von Drittanbietern anstelle von Android * -Paketen zu verwenden, da dann der von mir geschriebene Code zwischen Client und Server geteilt werden kann. Dies ist besonders relevant für JSON, bei dem Sie möglicherweise Daten an einem Ende an JSON serialisieren möchten, um sie an das andere Ende zu senden. In solchen Anwendungsfällen hilft es, wenn Sie Java an beiden Enden verwenden, die Einführung von Android. * -Abhängigkeiten zu vermeiden.
Oder ich denke, man könnte sich den relevanten Android. * Quellcode schnappen und ihn Ihrem Serverprojekt hinzufügen, aber das habe ich nicht versucht ...
quelle
Sie können eine Bibliothek von http://json.org (Json-lib oder org.json) herunterladen und zum Parsen / Generieren des JSON verwenden
quelle
Sie müssen dies nur importieren
Ich benutze zwei Objekte, weil Sie ein jsonObject in einem anderen haben können
dann habe ich den post json so in einen anderen gesteckt
Dies ist die Methode, die ich benutze, um eine Anfrage zu stellen
Einstellen der Verbindung
Einstellen des Ausgangsstroms
Ich benutze dies, um im Logcat zu sehen, was ich sende
hier wird der String konstruiert
Ich benutze dieses Protokoll, um zu sehen, was es in der Antwort kommt
Instanziieren eines JSON mit dem String, der die Serverantwort enthält
quelle
Wenn Sie nach einer schnellen JSON-Analyse in Android suchen, dann schlage ich Ihnen ein Tool vor, das frei verfügbar ist.
JSON Class Creator-Tool
Es ist kostenlos zu verwenden und erstellt Ihre All-JSON-Parsing-Klasse innerhalb von ein bis zwei Sekunden ..: D.
quelle
Obwohl es bereits hervorragende Antworten von Benutzern gibt, wie z. B. die Förderung der Verwendung von GSON usw., möchte ich die Verwendung von org.json vorschlagen . Es enthält die meisten GSON-Funktionen. Sie können damit auch einen JSON-String als Argument an das JSONObject übergeben und sich um die Ruhe kümmern, z. B.:
JSONObject json = new JSONObject("some random json string");
Diese Funktionalität macht es zu meinem persönlichen Favoriten.
quelle
Es gibt verschiedene Open Source-Bibliotheken, die Sie zum Parsen von json verwenden können.
org.json: - Wenn Sie json lesen oder schreiben möchten, können Sie diese Bibliothek verwenden. Erstellen Sie zuerst JsonObject: -
Verwenden Sie nun dieses Objekt, um Ihre Werte abzurufen: -
Das vollständige Beispiel finden Sie hier
Jackson-Datenbindung: - Wenn Sie Ihren JSON an eine bestimmte POJO-Klasse binden und analysieren möchten, können Sie die Jackson-Datenbindungsbibliothek verwenden. Dadurch wird Ihr JSON an die POJO-Klasse gebunden: -
Das vollständige Beispiel finden Sie hier
quelle