HttpServletResponse 返回的json数据不是json字符串,而是json对象

 

今天在改一个bug

情况:

  在spring boot中写了一个类Result ,用来统一封装 各个API响应结果 , 其中重写了toString()方法来返回 json字符串 。

  在正常情况下,从其它API 返回给前端的结果都是json字符串,前端可以正确解析

  但遇到一些异常的情况,返回给前端的结果却是json对象数据,key少了双引号,前端无法正确解析

 

从一开始调试到后面网上查找各种资料,想过有可能是注解、方法重写、调用等方面出错,但都难以找到根源

直到后面看到一篇文章说到write() 方法对结果的处理问题,才有所悟,并调试确定了根源

其他能够正确返回json 字符串的,是因为 RestController 注解自动将对象转成了json字符串

而 response.getWriter().write() 是直接将json对象写进去,并没有自动转换成json字符串格式

 

 1     private void responseResult(HttpServletResponse response, Result result) {
 2         response.setCharacterEncoding("UTF-8");
 3         response.setHeader("Content-Type", "application/json");
 4         response.setHeader("Access-Control-Allow-Credentials", "true");
 5         response.setHeader("Access-Control-Allow-Methods", "GET, POST");
 6         respon

你可能感兴趣的:(json,java,前端,ViewUI)