你如何从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));
`
祝你好运!