国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

詳解Spring MVC3返回JSON數據中文亂碼問題解決

2019-11-26 13:18:24
字體:
來源:轉載
供稿:網友

查了下網上的一些資料,感覺比較復雜,這里,我這幾使用兩種很簡單的辦法解決了中文亂碼問題。

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 Processerimport 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 */@Controllerpublic 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")@ResponseBodypublic 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;}

運行結果如下圖所示:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 公主岭市| 雷州市| 盱眙县| 泗洪县| 姚安县| 阳高县| 望江县| 合肥市| 扎鲁特旗| 德令哈市| 台中县| 慈利县| 佛山市| 吉木萨尔县| 衡水市| 宣汉县| 六安市| 罗城| 曲阜市| 淮北市| 樟树市| 弥勒县| 阳曲县| 怀来县| 开化县| 新建县| 新沂市| 枞阳县| 宁德市| 河北省| 清苑县| 兴隆县| 买车| 闻喜县| 磴口县| 怀安县| 贵溪市| 鸡泽县| 巢湖市| 金乡县| 全州县|