你如何从Java Servlet中返回一个JSON对象

如何从Java servlet返回一个JSON对象。

以前,当用servlet做AJAX时,我返回了一个string。 有没有需要使用的JSON对象types,或者你只是返回一个看起来像一个JSON对象的string,例如

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

我完全按照你的build议(返回一个String )。

你可能会考虑设置MIMEtypes,以表明你正在返回JSON,但是(根据这个其他的stackoverflow发布它是“application / json”)。

将JSON对象写入响应对象的输出stream。

您还应该如下设置内容types,它将指定您要返回的内容:

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

首先将JSON对象转换为String 。 然后把它写到application/json内容types和UTF-8的字符编码。

假设您使用Google Gson将Java对象转换为JSONstring,下面是一个示例:

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

就这样。

也可以看看:

  • 如何使用Servlets和Ajax?
  • 什么是正确的JSON内容types?

你如何从Java Servlet中返回一个JSON对象

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

只要写一个string到输出stream。 如果你觉得有用,你可以将MIMEtypes设置为text/javascript编辑application/json显然是官方的)。 (有一天,有一个小小的非零的机会,它会阻止它搞砸,这是一个很好的做法。)

为了便于Java编码,可能会有一个JSON对象。 但最后数据结构将被串行化为string。 设置一个适当的MIMEtypes将是很好的。

我build议从json.org JSON Java 。

Gson对此非常有用。 甚至更容易。 这是我的例子:

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

{ “农布雷”: “娟”, “apellido”: “马查多”, “datosCriticos”:[{ “EDAD”:12}]}

不得不说,如果你的variables在使用gson的时候是空的,它不会为你构buildjson

{}

我用Jackson将Java Object转换为JSONstring并发送如下。

 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( “文本/ JSON”);

//创buildJSONstring,我build议使用一些框架。

stringyour_string;

out.write(your_string.getBytes( “UTF-8”));

使用Google Gson lib,使用3条简单线条来接近BalusC。 在servlet方法中添加以下行:

 ` User objToSerialize = new User("Bill", "Gates"); ServletOutputStream outputStream = response.getOutputStream(); response.setContentType("application/json;charset=UTF-8"); outputStream.print(new Gson().toJson(objToSerialize)); 

`

祝你好运!