crear json en java
Cómo se devuelve un objeto JSON desde un Servlet Java (10)
¿Cómo se devuelve un objeto JSON de un servlet Java?
Anteriormente, al hacer AJAX con un servlet, he devuelto una cadena. ¿Hay algún tipo de objeto JSON que deba utilizarse o simplemente devuelve un String que se parece a un objeto JSON?
String objectToReturn = "{ key1: ''value1'', key2: ''value2'' }";
Cómo se devuelve un objeto JSON desde un Servlet Java
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.put("Mobile", 9999988888);
json.put("Name", "ManojSarnaik");
// finally output the json string
out.print(json.toString());
Cerca de la respuesta de BalusC en 4 líneas simples usando Google Gson lib. Agregue estas líneas al método de servlet:
User objToSerialize = new User("Bill", "Gates");
ServletOutputStream outputStream = response.getOutputStream();
response.setContentType("application/json;charset=UTF-8");
outputStream.print(new Gson().toJson(objToSerialize));
¡Buena suerte!
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:
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();
Gson es muy útil para esto. más fácil incluso aquí está mi ejemplo:
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}]}
Tengo que decirles a las personas si tus vars están vacíos cuando utilizas Gson, no construirán el JSON por ti. Solo el
{}
Hago exactamente lo que sugieres (devuelve una String
).
Sin embargo, podría considerar establecer el tipo MIME para indicar que está devolviendo JSON (de acuerdo con esta otra publicación de es "application / json").
Primero convierta el objeto JSON a String
. Luego, simplemente escríbalo en el escritor de respuestas junto con el tipo de contenido de application/json
y la codificación de caracteres de UTF-8.
Aquí hay un ejemplo, suponiendo que está usando Google Gson para convertir un objeto Java en una cadena JSON:
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);
}
Eso es todo.
Ver también:
Simplemente escriba una cadena en la secuencia de salida. Puede establecer el tipo MIME en text/javascript
( editar : application/json
es aparentemente officialer) si se siente útil. (Hay una posibilidad pequeña pero distinta de cero de que evitará que algo lo estropee algún día, y es una buena práctica).
Usé Jackson para convertir Java Object a cadena JSON y enviar de la siguiente manera.
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();
response.setContentType ("text / json");
// crea la cadena JSON, sugiero usar algo de framework.
Cadena your_string;
out.write (your_string.getBytes ("UTF-8"));