Spring MVC3返回JSON数据中文乱码问题解决

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

Spring版本:3.2.2.RELEASE

Jackson JSON版本:2.1.3

解决思路:Controller的方法中直接通过response向网络流写入String类型的json数据。

使用 Jackson 的 ObjectMapper 将Java对象转换为String类型的JSON数据。

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

代码如下:

 import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import com.fasterxml.jackson.databind.ObjectMapper; //Jsckson JSON Processer import java.util.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.*;
import java.io.PrintWriter;
import java.nio.charset.Charset; /**
* Created with IntelliJ IDEA 12.0
* Date: 2013-03-15
* Time: 16:17
*/
@Controller
public class HomeController {
@RequestMapping(value="/Home/writeJson", method=RequestMethod.GET)
public void writeJson(HttpServletResponse response)
{
ObjectMapper mapper = new ObjectMapper(); HashMap<String,String> map = new HashMap<String,String>();
map.put("","张三");
map.put("","李四");
map.put("","王五");
map.put("", "Jackson"); String json = ""; try
{
json = mapper.writeValueAsString(map);
System.out.println(json); //方案二
ServletOutputStream os = response.getOutputStream(); //获取输出流
os.write(json.getBytes(Charset.forName("GBK"))); //将json数据写入流中
os.flush(); //方案一
response.setCharacterEncoding("UTF-8"); //设置编码格式
response.setContentType("text/html"); //设置数据格式
PrintWriter out = response.getWriter(); //获取写入对象
out.print(json); //将json数据写入流中
out.flush();
}
catch(Exception e)
{
e.printStackTrace();
} //return "home";
}
}

 

还有一种方法:设置 @RequestMapping 的 produces 参数,代码如下所示:

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

 @RequestMapping(value="/Home/writeJson", method=RequestMethod.GET, produces = "text/html;charset=UTF-8")
@ResponseBody
public Object writeJson(HttpServletResponse response)
{
ObjectMapper mapper = new ObjectMapper(); HashMap<String,String> map = new HashMap<String,String>();
map.put("","张三");
map.put("","李四");
map.put("","王五");
map.put("", "Jackson"); String json = ""; try
{
json = mapper.writeValueAsString(map);
System.out.println(json);
}
catch(Exception e)
{
e.printStackTrace();
} return json;
}

运行结果如下图所示:

Spring MVC3返回JSON数据中文乱码问题解决(转)的更多相关文章

  1. Spring Boot返回json数据及完美使用FastJson解析Json数据

     Spring Boot返回json数据 视频地址:http://www.iqiyi.com/w_19rubxzsr5.html 博文参考:https://blog.csdn.net/linxingl ...

  2. springmvc返回json字符串中文乱码问题

    问题: 后台代码如下: @RequestMapping("menuTreeAjax") @ResponseBody /** * 根据parentMenuId获取菜单的树结构 * @ ...

  3. Spring MVC返回json数据给Android端

    原先做Android项目时,服务端接口一直是别人写的,自己拿来调用一下,但下个项目,接口也要自己搞定了,我想用Spring MVC框架来提供接口,这两天便抽空浅学了一下该框架以及该框架如何返回json ...

  4. Spring Boot 返回 JSON 数据,一分钟搞定!

    如何返回 JSON 数据? 在 Spring Boot 中返回 JSON 数据很简单,如下几步. 加入依赖 12345678910 <parent> <groupId>org. ...

  5. 2. Spring Boot返回json数据【从零开始学Spring Boot】

    在做如下操作之前,我们对之前的Hello进行简单的修改,我们新建一个包com.kfit.test.web然后新建一个类HelloControoler,然后修改App.Java类,主要是的这个类就是一个 ...

  6. (2)Spring Boot返回json数据【从零开始学Spring Boot】

    在做如下操作之前,我们对之前的Hello进行简单的修改,我们新建一个包com.kfit.test.web 然后新建一个类HelloControoler, 然后修改App.java类,主要是的这个类就是 ...

  7. spring mvc 返回json数据的四种方式

    一.返回ModelAndView,其中包含map集 /* * 返回ModelAndView类型的结果 * 检查用户名的合法性,如果用户已经存在,返回false,否则返回true(返回json数据,格式 ...

  8. python3乱码问题:接口返回数据中文乱码问题解决

    昨天测试接口出现有一个接口中文乱码问题,现象: 1 浏览器请求返回显示正常 2 用代码请求接口返回数据中文显示乱码 3 使用的python3,python3默认unicode编码,中文都是可以正常显示 ...

  9. PHP读取mssql,json数据中文乱码

    PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. ...

随机推荐

  1. EditText的hint不显示

    EditText的hint不显示可能的原因: 1.字体颜色与EditText的背景色一样; 2.使用了android:inputType = phone; 3.如果加上android:ellipsiz ...

  2. 傅盛谈管理的本质zz

    管理的本质就是树立一个核心的业务,让这个业务带着所有的员工和组织构架往前走,而不是去构建一个四平八稳的组织,让所有的业务井井有条. 今天,整个互联网都在回归本原.它让以前看上去极简单的点产生爆发,而不 ...

  3. Android Studio项目结构

    我们创建了一个Android Project,打开就如下图所示:  我们选择Project视图,就会有以下的项目文档结构:  上面笔者标注的数字是接下来要讲解的内容. 我们先来看1: 我们创建Appl ...

  4. Web大文件上传控件-asp.net-bug修复-Xproer.HttpUploader6.2

    版权所有 2009-2016荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...

  5. (转)windows下安装nodejs及框架express

    转自:http://jingyan.baidu.com/article/456c463b60fb380a583144a9.html windows下安装nodejs及框架express nodejs从 ...

  6. linux-6的yum软件仓库

    yum命令 命令 作用 yum repolist all  列出所有仓库 yum list all  列出仓库中的所有软件包 yum  info 软件包名称  查看软件包信息 yum install  ...

  7. 如果我用C#来输出99表

    题目:参见这个链接,简单点说就是在控制台输出一个99乘方表. 无聊想了个C#版本的解答: private static void Print(int n) { var s = Enumerable.R ...

  8. 简单sql操作

    ----------------------------- 数据库的有关SQL语句 -------------------------1.数据库 创建 create database data_nam ...

  9. (转)基于OWIN WebAPI 使用OAuth授权服务【客户端模式(Client Credentials Grant)】

    适应范围 采用Client Credentials方式,即应用公钥.密钥方式获取Access Token,适用于任何类型应用,但通过它所获取的Access Token只能用于访问与用户无关的Open ...

  10. 【Win10 UWP】QQ SDK(一):SDK基本使用方法

    每当开发一个应用需要社交分享的应用时,总是心里咯噔一下:到底什么时候分享能加上QQ和微信?除了WP8.0版本的微信SDK,官方似乎从未正面发布过适应时代发展的QQ SDK,就连后台,也没有一个可以创建 ...