jackson处理json
Posted hellobeicheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jackson处理json相关的知识,希望对你有一定的参考价值。
一,导入依赖jar包
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.0</version>
</dependency>
使用jackson踩坑
new ObjectMapper对象 里面有个String writeValueAsString(Object o) 可以把对象转换为json对象
在spring 的 Controller中怎么不走视图解析器呢?
在前后端分离的时候,后台一般只返回json字符串,不经过view解析器
@ResponseBody :在方法加上这个注解,return 就会 直接返回一个字符串
或者用Annotation "@RestController" 会起到一样的效果 notice:和@ResponseBody 不同的是他会使得这个类中所有方法都不走视图解析器
请求返回结果
json字符串乱码时,spring 提供了解决方案
- 在spring配置文件中加上下方的脚本代码,一劳永逸
<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>
- 在@RequestMapping中设置,每个都要配置,繁琐
produces属性
@RequestMapping(value = "/test",produces ="application/json;charset=utf-8")
当用来转换Date时
可以看到返回了一个时间戳TimeStamp,这不是我们想要的格式!下面介绍两种方案解决
1.用java代码实现 在解析前用SimpleDateFormat转换格式
2.用jackson里的方法
ObjectMapper mapper = new ObjectMapper();
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
mapper.setDateFormat(simpleDateFormat);
String s = mapper.writeValueAsString(date);
return s;
以上是关于jackson处理json的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot Json框架 -- Jackson返回结果处理