How do you return a JSON object from a Java Servlet
你怎么回到JSON对象格式Java伺服器。
在用伺服服服务器做阿杰克斯时,我已经恢复了弦乐。复制这个网站码到您的网站上以设置一个投票箱在您的网站上。
1 |
将JSON对象写入响应对象的输出流。
您还应该按以下方式设置内容类型,这将指定您要返回的内容:
1 2 3 4 5 6 | 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对象转换为
下面是一个示例,假设您使用谷歌GSON将Java对象转换为JSON字符串:
1 2 3 4 5 6 7 8 | 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); } |
这就是全部。
参见:- 如何使用servlet和ajax?
- 正确的JSON内容类型是什么?
我完全按照你的建议做(返回一个
不过,您可以考虑将mime类型设置为指示您正在返回json(根据另一篇stackoverflow文章,它是"application/json")。
How do you return a JSON object from a Java Servlet
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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()); |
GSON对此非常有用。更容易。下面是我的例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
}
1 2 3 |
out.print(json);
{"nombre":"juan","apellido":"machado","datosCriticos":[{"edad":12}]}
如果你的var在使用gson时是空的,就必须告诉别人它不会为你构建json。
{}
只需将字符串写入输出流。如果您觉得有帮助,可以将mime类型设置为
我使用杰克逊将Java对象转换为JSON字符串,并按如下方式发送。
1 2 3 4 5 6 7 | 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(); |
可能有JSON对象用于Java编码的便利性。但最终数据结构将被序列化为字符串。设置一个合适的mime类型是很好的。
我建议JSON.org提供JSON Java。
取决于Java版本(或JDK、SDK、JRE…我不知道,我是Java生态系统的新手,EDCOX1 5是抽象的。因此,这是一个新的实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 | import javax.json.Json; import javax.json.JsonObject; ... try (PrintWriter out = response.getWriter()) { response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); JsonObject json = Json.createObjectBuilder().add("foo","bar").build(); out.print(json.toString()); } |
response.setContentType("文本/json");
//创建JSON字符串,我建议使用一些框架。
把你的线串起来;
out.write(your_string.getbytes("utf-8"));
使用google gson lib在4行中接近balusc答案。将此行添加到servlet方法:
1 2 3 4 5 | User objToSerialize = new User("Bill","Gates"); ServletOutputStream outputStream = response.getOutputStream(); response.setContentType("application/json;charset=UTF-8"); outputStream.print(new Gson().toJson(objToSerialize)); |
祝你好运!