springMVC可以使用@ResponseBody注解对json解析
配置文件:
<!--在springMVC.xml 处理请求返回json字符串的乱码问题 -->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
jsp页面:
jsp代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="${pageContext.request.contextPath}/js/jquery-1.8.3.js"
type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
function test3() {
$.ajax({
type : "POST",
url : "${pageContext.request.contextPath}/testreturnjson/test3",
success : function(data) {
alert(data.name);
alert(data.sex);
}
});
}
function test4() {
$.ajax({
type : "POST",
url : "${pageContext.request.contextPath}/testreturnjson/test4",
success : function(data) {
alert(data[0].name);
alert(data[0].sex);
}
});
}
function test5() {
$.ajax({
type : "POST",
url : "${pageContext.request.contextPath}/testreturnjson/test5",
success : function(data) {
alert(data.city);
alert(data.time);
alert(data.天气);
alert(data.students[0].name);
alert(data.students[0].alarm.A);
}
});
}
</script>
</head>
<hr />
<a href="javascript:test1()">(ajax请求)使用原始的API HttpServletResponse返回</a>
<br />
<a href="javascript:test2()">(ajax请求)使用@ResponseBody注解返回json字符串</a>
<br />
<a href="javascript:test3()">(ajax请求)使用@ResponseBody注解返回对象</a>
<br />
<a href="javascript:test4()">(ajax请求)使用@ResponseBody注解返回List</a>
<br />
<a href="javascript:test5()">(ajax请求)使用@ResponseBody注解返回Map</a>
<br />
<hr />
<a href="${pageContext.request.contextPath}/testreturnjson/test1">使用原始的APIHttpServletResponse返回</a>
<br />
<a href="${pageContext.request.contextPath}/testreturnjson/test2">使用@ResponseBody注解返回json字符串</a>
<br />
<a href="${pageContext.request.contextPath}/testreturnjson/test3">使用@ResponseBody注解返回对象</a>
<br />
<a href="${pageContext.request.contextPath}/testreturnjson/test4">使用@ResponseBody注解返回List</a>
<br />
<a href="${pageContext.request.contextPath}/testreturnjson/test5">使用@ResponseBody注解返回Map</a>
<br />
</body>
</html>
controller类代码:
package com.yq.cn.controller;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.yq.cn.po.Alarm;
import com.yq.cn.po.Student;
@Controller
public class ReturnJsonController {
//使用原始的APIHttpServletResponse返回
@RequestMapping("/testreturnjson/test1")
public void test1(HttpServletResponse response) throws IOException{
//{"name":"张三","age":"23","pass":"123"}
response.setContentType("application/x-javascript;charset=utf-8");
String jsonStr = "{\"name\":\"张三\",\"age\":\"23\",\"pass\":\"123\"}";
response.getWriter().write(jsonStr);
response.getWriter().flush();
}
//使用@ResponseBody注解返回json字符串并做乱码处理
@RequestMapping(value = "/testreturnjson/test2",produces = "application/json;charset=utf-8")
@ResponseBody
public String test2() throws IOException{
//{"name":"张三","age":"23","pass":"123"}
String jsonStr = "{\"name\":\"张三\",\"age\":\"23\",\"pass\":\"123\"}";
return jsonStr;
}
//使用@ResponseBody注解返回对象
@RequestMapping(value = "/testreturnjson/test3",produces = "application/json;charset=utf-8")
@ResponseBody
public Student test3() throws IOException{
Student student = new Student("张三","222","男");
return student;
}
//使用@ResponseBody注解返回list
@RequestMapping(value = "/testreturnjson/test4",produces = "application/json;charset=utf-8")
@ResponseBody
public List<Student> test4() throws IOException{
List<Student> students = new ArrayList<Student>();
for (int i=0 ; i<10 ; i++) {
Student student = new Student("张"+i,"222","男");
students.add(student);
}
return students;
}
//使用@ResponseBody注解返回list
@RequestMapping(value = "/testreturnjson/test5",produces = "application/json;charset=utf-8")
@ResponseBody
public Map test5() throws IOException{
Map map = new HashMap();
map.put("city", "广州");
map.put("天气", "晴天");
map.put("time", new Date());
List<Student> students = new ArrayList<Student>();
for (int i=0 ; i<5 ; i++) {
Student student = new Student("张"+i,"222","男");
Alarm alarm = new Alarm();
alarm.setA(""+i);
student.setAlarm(alarm);
students.add(student);
}
map.put("students", students);
return map;
}
}