一般情况下,controller的方法返回值是一个字符串时,spring会去找已这个字符串为名的jsp文件。
当需要返回一个json字符串时就会出错。
解决问题的方法是在方法上添加注解@ResponseBody
<span style="white-space:pre"> </span>@RequestMapping(value="showSaleVolumeRank")
@ResponseBody
public String showSaleVolumeRank(HttpServletRequest request,
HttpServletResponse response, Model model)
{
List<SaleDTO> saleDTOs = new ArrayList<SaleDTO>();
saleDTOs.add(new SaleDTO("云南省", 878901.92, 1085429.21));
saleDTOs.add(new SaleDTO("河北省", 733988.8, 1080040.69));
saleDTOs.add(new SaleDTO("广西壮族自治区", 691610.0, 975663.98));
saleDTOs.add(new SaleDTO("湖北省", 585583.33, 1133054.53));
map.put("sales", saleDTOs);
Gson gson = new Gson();
String json = gson.toJson(map);
System.out.println(json);
System.out.println("myjson");
return json;
}这样的话,在前端就可以用ajax接收到json字符串了。
但是这种情况下,返回的json字符串被jquery接收后,会出现中文乱码问题,中文全部都会变成问号。。。
解决办法是为注解@RequestMapping()配置produces的值。
@RequestMapping(value = "/add", <span style="color:#ff0000;">produces = {"application/json;charset=UTF-8"}</span>)这样在前端接收到的json字符串就不会出现中文乱码问题了。
本文介绍如何在Spring MVC中正确地返回JSON格式的数据,并解决中文乱码问题。通过使用@ResponseBody注解将对象转换为JSON字符串返回,同时设置@RequestMapping的produces属性确保字符集正确。
850

被折叠的 条评论
为什么被折叠?



