wake-up-neo.com

Wie kann ein JSON-Objekt von einem Java Servlet zurückgegeben werden?

Wie kann ein JSON-Objekt aus einem Java Servlet zurückgegeben werden?.

Wenn ich zuvor AJAX mit einem Servlet ausgeführt habe, habe ich eine Zeichenfolge zurückgegeben. Gibt es einen JSON-Objekttyp, der verwendet werden muss, oder geben Sie einfach eine Zeichenfolge zurück, die wie ein JSON-Objekt aussieht, z.

String objectToReturn = "{ key1: 'value1', key2: 'value2' }";
150
Ankur

Ich mache genau das, was du vorschlägst (gib ein String zurück).

Sie könnten erwägen, den MIME-Typ so festzulegen, dass er anzeigt, dass Sie JSON zurückgeben (gemäß diesem anderen Stackoverflow-Beitrag "application/json").

56
Mark Elliot

Schreiben Sie das JSON-Objekt in den Ausgabestream des Antwortobjekts.

Sie sollten den Inhaltstyp auch wie folgt festlegen, wodurch festgelegt wird, was Sie zurückgeben:

response.setContentType("application/json");
// Get the printwriter object from response to write the required json object to the output stream      
PrintWriter out = response.getWriter();
// Assuming your json object is **jsonObject**, perform the following, it will return your json object  
out.print(jsonObject);
out.flush();
168
user241924

Konvertieren Sie zuerst das JSON-Objekt in String. Dann schreiben Sie es einfach zusammen mit dem Inhaltstyp application/json Und der Zeichencodierung von UTF-8 an den Antwortschreiber.

In diesem Beispiel wird angenommen, dass Sie Google Gson verwenden, um ein Java -Objekt in eine JSON-Zeichenfolge zu konvertieren:

protected void doXxx(HttpServletRequest request, HttpServletResponse response) {
    // ...

    String json = new Gson().toJson(someObject);
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(json);
}

Das ist alles.

Siehe auch:

79
BalusC

Wie kann ein JSON-Objekt von einem Java Servlet zurückgegeben werden?)

response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();

  //create Json Object
  JsonObject json = new JsonObject();

    // put some value pairs into the JSON object .
    json.addProperty("Mobile", 9999988888);
    json.addProperty("Name", "ManojSarnaik");

    // finally output the json string       
    out.print(json.toString());
28
MAnoj Sarnaik

Dafür ist Gson sehr nützlich. noch einfacher. Hier ist mein Beispiel:

public class Bean {
private String nombre="juan";
private String apellido="machado";
private List<InnerBean> datosCriticos;

class InnerBean
{
    private int edad=12;

}
public Bean() {
    datosCriticos = new ArrayList<>();
    datosCriticos.add(new InnerBean());
}

}

    Bean bean = new Bean();
    Gson gson = new Gson();
    String json =gson.toJson(bean);

out.print (json);

{"nombre": "juan", "apellido": "machado", "datosCriticos": [{"edad": 12}]}

Müssen Sie Leute sagen, wenn Ihre vars leer sind, wenn Sie gson verwenden, baut es nicht das json für Sie

{}

8
superUser

Schreiben Sie einfach eine Zeichenfolge in den Ausgabestream. Sie können den MIME-Typ auf text/javascript (edit: application/json Ist anscheinend offizieller) setzen, wenn Sie sich hilfreich fühlen. (Es gibt eine kleine, aber ungleiche Chance, dass es eines Tages etwas daran hindert, es durcheinander zu bringen, und es ist eine gute Übung.)

8
fennec

Ich habe Jackson verwendet, um Java Object in einen JSON-String zu konvertieren und wie folgt zu senden.

PrintWriter out = response.getWriter();
ObjectMapper objectMapper= new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(MyObject);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
out.print(jsonString);
out.flush();
7
ravthiru

Möglicherweise gibt es ein JSON-Objekt für Java Codierungskomfort. Zuletzt wird die Datenstruktur jedoch in einen String serialisiert. Das Festlegen eines geeigneten MIME-Typs wäre hilfreich.

Ich würde vorschlagen JSON Java von json.org .

6
nil

Abhängig von der Java version (oder JDK, SDK, JRE ... ich weiß nicht, ich bin neu in dem Java ecosystem), dem JsonObject ist abstrakt, das ist also eine neue Implementierung:

import javax.json.Json;
import javax.json.JsonObject;

...

try (PrintWriter out = response.getWriter()) {
    response.setContentType("application/json");       
    response.setCharacterEncoding("UTF-8");

    JsonObject json = Json.createObjectBuilder().add("foo", "bar").build();

    out.print(json.toString());
}
5
Rafael Barros

response.setContentType ("text/json");

// Die JSON-Zeichenfolge erstellen. Ich empfehle die Verwendung eines Frameworks.

String your_string;

out.write (your_string.getBytes ("UTF-8"));

3
RHT

In der Nähe von BalusC mit Google Gson lib in 4 einfachen Zeilen antworten. Fügen Sie der Servlet-Methode folgende Zeilen hinzu:

User objToSerialize = new User("Bill", "Gates");    
ServletOutputStream outputStream = response.getOutputStream();

response.setContentType("application/json;charset=UTF-8");
outputStream.print(new Gson().toJson(objToSerialize));

Viel Glück!

0
Panayot Kulchev

Wenn Sie Gson verwenden, können Sie eine json-Antwort senden (siehe Code unten)

Sie können diesen Code sehen

@WebServlet(urlPatterns = {"/jsonResponse"})
public class JsonResponse extends HttpServlet {

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("application/json");
    response.setCharacterEncoding("utf-8");
    Student student = new Student(12, "Ram Kumar", "Male", "1234565678");
    Subject subject1 = new Subject(1, "Computer Fundamentals");
    Subject subject2 = new Subject(2, "Computer Graphics");
    Subject subject3 = new Subject(3, "Data Structures");
    Set subjects = new HashSet();
    subjects.add(subject1);
    subjects.add(subject2);
    subjects.add(subject3);
    student.setSubjects(subjects);
    Address address = new Address(1, "Street 23 NN West ", "Bhilai", "Chhattisgarh", "India");
    student.setAddress(address);
    Gson gson = new Gson();
    String jsonData = gson.toJson(student);
    PrintWriter out = response.getWriter();
    try {
        out.println(jsonData);
    } finally {
        out.close();
    }

  }
}

hilfreich von json Antwort von Servlet in Java

0
xrcwrn