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' }";
136
demandé sur rodrigo-silveira 2010-01-06 07:41:05

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").

48
répondu Mark Elliot 2017-05-23 12:03:07

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();
162
répondu user241924 2011-03-06 22:02:40

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:

76
répondu BalusC 2017-05-23 11:47:24

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());
25
répondu MAnoj Sarnaik 2017-12-06 06:16:36

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.)

8
répondu fennec 2010-01-06 04:43:55

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

{}

8
répondu superUser 2014-10-24 03:02:20

il pourrait y avoir un objet JSON pour la commodité du codage Java. Mais enfin la structure de données sera sérialisée en chaîne. Mettre en place un type MIME approprié serait bien.

je suggérerais JSON Java de json.org .

6
répondu nil 2013-10-23 13:36:22

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();
5
répondu ravthiru 2017-01-16 06:46:39

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"));

3
répondu RHT 2015-12-03 13:28:05

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!

0
répondu Panayot Kulchev 2017-11-23 06:08:09