Comment renvoyer un objet JSON d'un Servlet Java
Comment retourner un objet JSON d'un servlet Java.
précédemment en faisant AJAX avec un servlet j'ai retourné une chaîne. Est-ce qu'il y a un type d'objet JSON qui doit être utilisé, ou est-ce que vous retournez juste une chaîne qui ressemble à un objet JSON par exemple
String objectToReturn = "{ key1: 'value1', key2: 'value2' }";
10 réponses
je fais exactement ce que vous suggérez (retournez un String
).
vous pourriez envisager de définir le type MIME pour indiquer que vous retournez JSON, bien que (selon cet autre poteau stackoverflow c'est"application/json").
Ecrire l'objet JSON au flux de sortie de l'objet response.
vous devez également définir le type de contenu comme suit, qui spécifiera ce que vous retournez:
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();
convertissez D'abord L'objet JSON en String
. Ensuite, il suffit de l'écrire à l'auteur de la réponse avec le type de contenu de application/json
et l'encodage de caractère de UTF-8.
voici un exemple en supposant que vous utilisez Google Gson pour convertir un objet Java en chaîne 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);
}
C'est tout.
voir aussi:
Comment retourner un objet JSON d'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());
il suffit d'écrire une chaîne de caractères au flux de sortie. Vous pouvez définir le type MIME à text/javascript
( edit : application/json
est apparemment officialer) si vous vous sentez utile. (Il y a une petite mais non nulle chance que ça empêche quelque chose de tout gâcher un jour, et c'est une bonne pratique.)
Gson est très utile pour cela. plus facile même. voici mon exemple:
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);
terminé.print (json);
{"nombre": "juan", "apellido": "machado", "datosCriticos": [{"edad":12}]}
doit dire les gens si vos vars sont vides en utilisant gson il ne construira pas le json pour vous.Juste le
{}
j'ai utilisé Jackson convertir en Objet Java à chaîne JSON et l'envoyer comme suit.
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();
réponse.setContentType ("text/json");
//création de la chaîne JSON, je suggère d'utiliser certains cadres.
Chaîne your_string;
terminé.écrire(your_string.getBytes ("UTF-8"));
Près de BalusC réponse en 4 lignes simples à l'aide de Google Gson lib. Ajouter cette ligne à la méthode servlet:
User objToSerialize = new User("Bill", "Gates");
ServletOutputStream outputStream = response.getOutputStream();
response.setContentType("application/json;charset=UTF-8");
outputStream.print(new Gson().toJson(objToSerialize));
bonne chance!