¿Cómo se devuelve un objeto JSON desde un servlet Java?
Anteriormente, cuando hacía AJAX con un servlet, devolvía una cadena. ¿Hay un tipo de objeto JSON que necesita ser utilizado, o simplemente devuelve una cadena que se parece a un objeto JSON, por ejemplo?
String objectToReturn = "{ key1: 'value1', key2: 'value2' }";
{ key1: value1, key2: value2 }
?Respuestas:
Hago exactamente lo que sugieres (devuelve a
String
).Sin embargo, puede considerar configurar el tipo MIME para indicar que está devolviendo JSON (de acuerdo con esta otra publicación de stackoverflow es "application / json").
fuente
Escriba el objeto JSON en la secuencia de salida del objeto de respuesta.
También debe establecer el tipo de contenido de la siguiente manera, que especificará lo que está devolviendo:
fuente
String jsonStr = "{\"my_key\": \"my_value\"}";
Primero convierta el objeto JSON a
String
. Luego, escríbalo al escritor de respuestas junto con el tipo de contenidoapplication/json
y la codificación de caracteres de UTF-8.Aquí hay un ejemplo asumiendo que está usando Google Gson para convertir un objeto Java en una cadena JSON:
Eso es todo.
Ver también:
fuente
fuente
Simplemente escriba una cadena en la secuencia de salida. Puede configurar el tipo MIME en
text/javascript
( editar :application/json
aparentemente es oficial) si se siente útil. (Hay una pequeña pero distinta probabilidad de que algún día evite que algo lo estropee, y es una buena práctica).fuente
Gson es muy útil para esto. más fácil incluso. Aquí está mi ejemplo:
}
Tengo que decirle a las personas que si los vars están vacíos cuando usas gson, no construirán el json por ti.
fuente
Usé Jackson para convertir objetos Java en cadenas JSON y enviar de la siguiente manera.
fuente
Puede haber un objeto JSON para conveniencia de codificación Java. Pero, por fin, la estructura de datos se serializará en cadena. Establecer un tipo MIME adecuado sería bueno.
Sugeriría JSON Java de json.org .
fuente
String
- la salida debe ir directamente aOutputStream
. O, si se necesita una forma intermedia por alguna razón, puede usarbyte[]
. La mayoría de las bibliotecas JSON de Java pueden escribir directamente enOutputStream
.Dependiendo de la versión de Java (o JDK, SDK, JRE ... no sé, soy nuevo en el ecosistema de Java),
JsonObject
es abstracto. Entonces, esta es una nueva implementación:fuente
response.setContentType ("texto / json");
// crea la cadena JSON, sugiero usar un marco.
Cadena your_string;
out.write (your_string.getBytes ("UTF-8"));
fuente
Cerca de la respuesta de BalusC en 4 líneas simples usando Google Gson lib. Agregue estas líneas al método de servlet:
¡Buena suerte!
fuente
Al usar Gson puede enviar una respuesta json, vea el código a continuación
Puedes ver este código
útil de respuesta json de servlet en java
fuente
Puedes usar abajo como.
Si quieres usar json array:
Crear una clase llamada Modelo como abajo
En sevlet getMethod puedes usar como abajo
Salida :
Quiero json Object solo use como:
Función anterior Salida :
La fuente completa se proporciona a GitHub: https://github.com/enamul95/ServeletJson.git
fuente