第一步:导入依赖
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
第二步:编写Controller
@ResponseBody
public String testAjax2() throws JsonProcessingException {
System.out.println("a2");
//创建一个jackson的对象映射器,用来解析数据
ObjectMapper mapper = new ObjectMapper();
List<User> list=new ArrayList<>();
for (int i = 0; i < 10; i++) {
User user=new User(i,"x1"+i,"1"+i);
list.add(user);
}
//将我们的对象解析成为json格式
String string=mapper.writeValueAsString(list);
System.out.println(list);
return string;
}
注意:
- @ResponseBody:放在方法上面就可以了
- @RestController:放在类上面,方法上面就不用了放了,较为简便
通过Tomcat启动并测试
疑问一:
去掉这两行代码可以返回json吗?
ObjectMapper mapper = new ObjectMapper();
String string=mapper.writeValueAsString(list);
@RequestMapping(value = "a2",produces = "application/json;charset=utf-8")
//使用json需要的注解
@ResponseBody
public List<User> testAjax2() throws JsonProcessingException {
System.out.println("a2");
//创建一个jackson的对象映射器,用来解析数据
// ObjectMapper mapper = new ObjectMapper();
List<User> list=new ArrayList<>();
for (int i = 0; i < 10; i++) {
User user=new User(i,"x1"+i,"1"+i);
list.add(user);
}
//将我们的对象解析成为json格式
// String string=mapper.writeValueAsString(list);
// System.out.println(list);
return list;
}
好像可以呀。和原来一样
乱码问题
方式一:
@RequestMapping(value = "a2",produces = "application/json;charset=utf-8")
方式二:
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="failOnEmptyBeans" value="false"/>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>