json用了jackson 解析json数据
controller层编写json中使用最多的方法
package com.qst.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.qst.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Controller
public class UserController {
@RequestMapping(value = "/json1",produces ="application/json;charset=utf-8")
// @RequestBody
//@ResponseBody,将服务器返回的对象转换为json对象相应回去;
@ResponseBody
public String json1() throws JsonProcessingException {
//需要一个jackson的对象映射器,就是一个类,使用它可以直接将对象转换为字符串;
ObjectMapper objectMapper=new ObjectMapper();
//创建一个对象
User user = new User("阮久卿",1,"男");
System.out.println(user);
//将java对象转换为json对象
String str = objectMapper.writeValueAsString(user);
System.out.println(str);
return str; //由于使用了@ResponseBody 将string转换为json
}
@RequestMapping(value = "/json2")
@ResponseBody
public String json2() throws JsonProcessingException {
//需要一个jackson的对象映射器,就是一个类,使用它可以直接将对象转换为字符串;
ObjectMapper objectMapper=new ObjectMapper();
//创建一个对象
List<User> list = new ArrayList<>();
User user = new User("阮久卿",1,"男");
User user1 = new User("阮久卿1",1,"男");
User user2= new User("阮久卿2",1,"男");
User user3= new User("阮久卿3",1,"男");
list.add(user);
list.add(user1);
list.add(user2);
list.add(user3);
System.out.println(user);
//将java对象转换为json对象
String str = objectMapper.writeValueAsString(list);
System.out.println(str);
return str; //由于使用了@ResponseBody 将string转换为json
}
@RequestMapping(value = "/time")
@ResponseBody
public String json3() throws JsonProcessingException {
//需要一个jackson的对象映射器,就是一个类,使用它可以直接将对象转换为字符串;
ObjectMapper objectMapper=new ObjectMapper();
//创建一个对象
Date date = new Date();
//时间默认返回的json字符编程了时间戳的格式
System.out.println(date);
String str = objectMapper.writeValueAsString(date);
;
//将java对象转换为json对象
return str; //由于使用了@ResponseBody 将string转换为json
}
@RequestMapping(value = "/time2")
@ResponseBody
public String json4() throws JsonProcessingException {
//需要一个jackson的对象映射器,就是一个类,使用它可以直接将对象转换为字符串;
ObjectMapper objectMapper=new ObjectMapper();
//关闭时间戳功能
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
//时间格式转换
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//时间默认返回的json字符编程了时间戳的格式
objectMapper.setDateFormat(simpleDateFormat);
Date date = new Date();
return objectMapper.writeValueAsString(date);
}
}
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>