首先要引入jackson依赖
<!-- json解析工具-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.2</version>
</dependency>
如果是maven构建的web工程的话,要将该依赖加入到lib包下面,否则运行时会出错(不知道的看这个)
然后在springmvc的配置文件中配置解决乱码问题的代码
<!--解决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>
然后复制下面封装好的工具类
public class JsonUtils {
//重载
public static String getJson(Object object) throws JsonProcessingException {
return getJson(object,"yyyy-MM-dd HH:mm:ss");
}
//object为要转化为json格式的对象,dateFormat为要转化的日期格式如"yyyy-MM-dd HH:mm:ss"
public static String getJson(Object object,String dateFormat) throws JsonProcessingException {
//jackson中的转化json函数
ObjectMapper mapper=new ObjectMapper();
//不使用时间戳的方式
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
//自定义日期的格式
SimpleDateFormat sdf=new SimpleDateFormat(dateFormat);
//将SimpleDateFormat转化后的日期格式定义为jackson的日期输出格式
mapper.setDateFormat(sdf);
//如果object不是时间类型的对象,则上面的设置不起作用,还是直接把Object对象转化为json串了
return mapper.writeValueAsString(object);
}
}
测试代码:
//@Controller会直接被视图解析器解析
//返回json字符串注解要@Controller和@ReponseBody一起使用,或者只使用@RestController注解也可以
@Controller
public class UserController {
//调用JsonUtils工具类
@RequestMapping("/j3")
//该注解返回一个json字符串,不会走视图解析器
@ResponseBody
public String json3() throws JsonProcessingException {
User user = new User("tanjiu", 13, "男");
Date date = new Date();
//三种方式调用工具类
// return JsonUtils.getJson(user);
// return JsonUtils.getJson(date,"yyyy-MM-dd HH:mm:ss");
return JsonUtils.getJson(date);
}
}
测试结果: