导入jar包
<!--jackson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
代码练习如下
@Controller
public class JsonController {
@RequestMapping("/json1")
@ResponseBody
//@ResponseBody:将服务器端返回的对象转换为json字符串
public String json1(){
//需要一个jackson对象映射器,即一个类,它可以直接将对象转换为json字符串
ObjectMapper mapper = new ObjectMapper();
//创建对象
User user=new User();
user.setId(1);
user.setName("小明");
user.setAge(23);
String str=null;
//将java对象转换为json字符串
try {
str = mapper.writeValueAsString(user);
System.out.println(str);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
//由于使用了@ResponseBody注解不会经过视图解析器,而是将str以json格式的字符串返回
return str;
}
@RequestMapping("/json2")
@ResponseBody
//@ResponseBody:将服务器端返回的对象转换为json字符串
public String json2() throws JsonProcessingException {
//需要一个jackson对象映射器,即一个类,它可以直接将对象转换为json字符串
//创建对象
//将java对象转换为json字符串
//由于使用了@ResponseBody注解不会经过视图解析器,而是将str以json格式的字符串返回
//使用链式编程一句便写完
return new ObjectMapper().writeValueAsString(new User(1,"小李",22));
}
@RequestMapping("/json3")
@ResponseBody
//@ResponseBody:将服务器端返回的对象转换为json字符串
public String json3() throws JsonProcessingException {
//需要一个jackson对象映射器,即一个类,它可以直接将对象转换为json字符串
ObjectMapper mapper = new ObjectMapper();
//创建一个集合
List<User> list=new ArrayList<User>();
//创建对象
User user1=new User(1,"小明",11);
User user2=new User(2,"小李",12);
User user3=new User(3,"小敏",33);
User user4=new User(4,"小高",65);
list.add(user1);
list.add(user2);
list.add(user3);
list.add(user4);
String str = mapper.writeValueAsString(list);
//由于使用了@ResponseBody注解不会经过视图解析器,而是将str以json格式的字符串返回
return str;
}
@RequestMapping("/json4")
@ResponseBody
//@ResponseBody:将服务器端返回的对象转换为json字符串
public String json4() throws JsonProcessingException {
//需要一个jackson对象映射器,即一个类,它可以直接将对象转换为json字符串
ObjectMapper mapper = new ObjectMapper();
//关闭时间戳功能,让它不返回时间戳
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
//自定义时间格式对象
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//让mapper指定日期格式
mapper.setDateFormat(simpleDateFormat);
//创建日期对象
Date date=new Date();
return mapper.writeValueAsString(date);
}
@RequestMapping("/json5")
@ResponseBody
//@ResponseBody:将服务器端返回的对象转换为json字符串
public String json5(){
//创建日期对象
Date date=new Date();
//通过工具类调用方法获取返回值
return JsonUtils.getJson(date);
}
}
json格式乱码处理
<mvc:annotation-driven>
<!--json格式乱码处理 写在<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>