手机版

详解弹簧MVC3返回JSON数据中文乱码问题解决

时间:2021-09-06 来源:互联网 编辑:宝哥软件园 浏览:

查了下网上的一些资料,感觉比较复杂,这里,我这几使用两种很简单的办法解决了中文乱码问题。

春天版本:3.2.2.RELEASE

杰克逊JSON版本:2.1.3

解决思路:控制器的方法中直接通过反应向网络流写入线类型的json数据。

使用杰克逊的对象映射器将爪哇对象转换为线类型的JSON数据。

为了避免中文乱码,需要设置字符编码格式,例如:UTF-8、GBK等。

代码如下:

导入组织。弹簧框架。豆子。工厂。注释。自动连线;导入组织。弹簧框架。刻板印象。控制器;导入组织。弹簧框架。ui。模型;导入组织。弹簧框架。网络。绑定。注释。请求映射;导入组织。弹簧框架。网络。绑定。注释。请求方法;导入组织。弹簧框架。网络。绑定。注释。请求参数;导入com。fasterxml。杰克逊。数据绑定。对象映射器;//Jsckson JSON处理器导入Java。乌提尔。*;导入javax。servlet。servletoutputstream导入javax。servlet。http。*;导入Java。io。版画作家;导入Java。尼奥。字符集。字符集;/** *使用IntelliJ IDEA 12.0 *日期: 2013-03-15 *时间: 16:17 */@控制器公开类HomeController { @RequestMapping(值='/Home/writeJson ',方法=RequestMethod .GET)public void writeJson(HttpServletresponse响应){对象映射器=新对象映射器();HashMapString,String map=new HashMapString,String();map.put('1 ','张三');map.put('2 ','李四');map.put('3 ','王五');map.put('4 ',' Jackson ');字符串json=请尝试{ JSON=映射器。writevalueasstring(映射);系统。出去。println(JSON);//方案二ServletOutputStream OS=响应。getoutputstream();//获取输出流操作系统。write(JSON。getbytes(字符集。for name(' GBK '));//将json数据写入流中操作系统。flush();//方案一回应。setcharacter encoding(' UTF-8 ');//设置编码格式回应。setcontenttype(' text/html ');//设置数据格式PrintWriter out=响应。getwriter();//获取写入对象出去。印刷品(JSON);//将json数据写入流中出去。flush();} catch(异常e){ e . print stack trace();}//返回'家;}}还有一种方法:设置@RequestMapping的生产参数,代码如下所示:

思路:使用@ResponseBody注解直接返回json字符串,为了防止中文乱码,将@RequestMapping的生产参数设置成文本/html;charset=UTF-8 '即可。

@RequestMapping(值='/Home/writeJson ',方法=RequestMethod .GET,产生=' text/html;charset=UTF-8 ')@ ResponseBodypublic Object writeJson(httpersvletresponse响应){ ObjectMapper mapper=new ObjectMapper();HashMapString,String map=new HashMapString,String();map.put('1 ','张三');map.put('2 ','李四');map.put('3 ','王五');map.put('4 ',' Jackson ');字符串json=请尝试{ JSON=映射器。writevalueasstring(映射);系统。出去。println(JSON);} catch(异常e){ e . print stack trace();}返回json}运行结果如下图所示:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

版权声明:详解弹簧MVC3返回JSON数据中文乱码问题解决是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。