全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解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("1","张三");
    map.put("2","李四");
    map.put("3","王五");
    map.put("4", "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("1","张三");
    map.put("2","李四");
    map.put("3","王五");
    map.put("4", "Jackson");

    String json = "";

    try
    {
      json = mapper.writeValueAsString(map);
      System.out.println(json);
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

    return json;
}

运行结果如下图所示:

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


# spring  # mvc  # json  # 乱码  # spring返回json  # 返回json  # SpringMVC中解决@ResponseBody注解返回中文乱码问题  # Spring MVC Controller返回值及异常的统一处理方法  # SpringMVC返回的ResponseEntity出现乱码及解决  # 所示  # 李四  # 王五  # 两种  # 我这  # 很简单  # 转换为  # 为了避免  # 为了防止  # 大家多多  # 如下图  # 设置成  # 数据格式  # 解决了  # 网上  # Autowired  # annotation  # factory  # Model  # ui 


相关文章: 如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  如何通过cPanel快速搭建网站?  南宁网站建设制作定制,南宁网站建设可以定制吗?  如何通过VPS建站实现广告与增值服务盈利?  红河网站制作公司,红河事业单位身份证如何上传?  北京的网站制作公司有哪些,哪个视频网站最好?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  建站之星代理平台如何选择最佳方案?  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  建站ABC备案流程中有哪些关键注意事项?  如何快速搭建支持数据库操作的智能建站平台?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  建站之星安装后如何配置SEO及设计样式?  高防服务器如何保障网站安全无虞?  高端建站如何打造兼具美学与转化的品牌官网?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  如何获取开源自助建站系统免费下载链接?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  ,南京靠谱的征婚网站?  自助网站制作软件,个人如何自助建网站?  如何选择靠谱的建站公司加盟品牌?  如何快速生成专业多端适配建站电话?  建站主机是否等同于虚拟主机?  如何有效防御Web建站篡改攻击?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何访问已购建站主机并解决登录问题?  重庆市网站制作公司,重庆招聘网站哪个好?  如何快速打造个性化非模板自助建站?  如何在云主机上快速搭建网站?  移民网站制作流程,怎么看加拿大移民官网?  网站制作壁纸教程视频,电脑壁纸网站?  如何通过FTP空间快速搭建安全高效网站?  盘锦网站制作公司,盘锦大洼有多少5G网站?  c++ stringstream用法详解_c++字符串与数字转换利器  建站主机选购指南:核心配置与性价比推荐解析  建站上传速度慢?如何优化加速网站加载效率?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  nginx修改上传文件大小限制的方法  黑客如何通过漏洞一步步攻陷网站服务器?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  电商平台网站制作流程,电商网站如何制作?  教程网站设计制作软件,怎么创建自己的一个网站?  如何在新浪SAE免费搭建个人博客?  ,交易猫的商品怎么发布到网站上去?  如何在服务器上配置二级域名建站?  建站主机如何选?性能与价格怎样平衡?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。