Wie geben Sie ein JSON-Objekt aus einem Java-Servlet zurück?
Zuvor habe ich beim Ausführen von AJAX mit einem Servlet eine Zeichenfolge zurückgegeben. Gibt es einen JSON-Objekttyp, der verwendet werden muss, oder geben Sie einfach einen String zurück, der wie ein JSON-Objekt aussieht, z
String objectToReturn = "{ key1: 'value1', key2: 'value2' }";
{ key1: value1, key2: value2 }
?Antworten:
Ich mache genau das, was Sie vorschlagen (Rückgabe a
String
).Sie können jedoch den MIME-Typ festlegen, um anzuzeigen, dass Sie JSON zurückgeben (laut diesem anderen Stackoverflow-Beitrag ist es "application / json").
quelle
Schreiben Sie das JSON-Objekt in den Ausgabestream des Antwortobjekts.
Sie sollten den Inhaltstyp auch wie folgt festlegen, um anzugeben, was Sie zurückgeben:
quelle
String jsonStr = "{\"my_key\": \"my_value\"}";
Konvertieren Sie zuerst das JSON-Objekt in
String
. Dann schreiben Sie es einfach zusammen mit dem Inhaltstypapplication/json
und der Zeichenkodierung von UTF-8 an den Antwortschreiber .In diesem Beispiel wird davon ausgegangen, dass Sie Google Gson verwenden , um ein Java-Objekt in eine JSON-Zeichenfolge zu konvertieren:
Das ist alles.
Siehe auch:
quelle
quelle
Schreiben Sie einfach eine Zeichenfolge in den Ausgabestream. Sie können den MIME-Typ auf
text/javascript
( bearbeiten :application/json
ist anscheinend offizieller) setzen, wenn Sie sich hilfreich fühlen. (Es gibt eine kleine Chance, aber ungleich Null, dass etwas davon abhält, es eines Tages durcheinander zu bringen, und es ist eine gute Praxis.)quelle
Gson ist dafür sehr nützlich. noch einfacher. Hier ist mein Beispiel:
}}
Ich muss sagen, Leute, wenn deine Vars leer sind, wenn du gson verwendest, wird es den json nicht für dich bauen
quelle
Ich habe Jackson verwendet , um Java Object in eine JSON-Zeichenfolge zu konvertieren und wie folgt zu senden.
quelle
Möglicherweise gibt es ein JSON-Objekt, um die Java-Codierung zu vereinfachen. Zuletzt wird die Datenstruktur jedoch in einen String serialisiert. Es wäre schön, einen richtigen MIME-Typ einzustellen.
Ich würde JSON Java von json.org vorschlagen .
quelle
String
Ausgabe zu erhöhenOutputStream
. Oder, wenn Zwischenform aus irgendeinem Grund benötigt wird, kann verwendenbyte[]
. Die meisten Java JSON-Bibliotheken können direkt in schreibenOutputStream
.Abhängig von der Java-Version (oder JDK, SDK, JRE ... ich weiß nicht, ich bin neu im Java-Ökosystem) ist das
JsonObject
abstrakt. Das ist also eine neue Implementierung:quelle
response.setContentType ("text / json");
// erstelle die JSON-Zeichenfolge, ich schlage vor, ein Framework zu verwenden.
String your_string;
out.write (your_string.getBytes ("UTF-8"));
quelle
Nahe an BalusC Antwort in 4 einfachen Zeilen mit Google Gson lib. Fügen Sie diese Zeilen zur Servlet-Methode hinzu:
Viel Glück!
quelle
Mit Gson können Sie eine JSON-Antwort senden (siehe Code unten)
Sie können diesen Code sehen
hilfreich von json Antwort von Servlet in Java
quelle
Sie können unten wie verwenden.
Wenn Sie ein JSON-Array verwenden möchten:
Erstellen Sie eine Klasse mit dem Namen Model wie unten
In sevlet getMethod können Sie wie unten verwenden
Ausgabe :
Ich möchte, dass json Object wie folgt verwendet:
Über der Funktion Ausgabe :
Die vollständige Quelle wird GitHub zur Verfügung gestellt: https://github.com/enamul95/ServeletJson.git
quelle