转 springmvc 返回时间格式处理

众所周知,用Spring cloud构建微服务架构时,后台接收controller通常用@RestController注解。

@RestController注解的作用在 http://blog.csdn.net/m0_38016299/article/details/78270197中有讲解,

@Restcontroller是@Controller和@ResponseBody的结合体。

这样就将后台返回的Java对象转换为Json字符串传递给前台,

但是当数据库字段为date类型时,@ResponseBody注解在转换日期类型时会默认把日期转换为时间戳(例如: date:2017-10-25  转换为 时间戳:15003323990)。

此时有两种方式可以解决日期转换Json问题:

1、(不推荐)局部修改,自定义注解进行将日期类型转换为Date类型。

2、(强烈推荐)全局修改,用MappingJackson2HttpMessageConverter配置在XML(SpringMVC)或者配置在Application.Java启动类(Spring boot、Spring cloud)。

配置在Application.Java启动类(Spring boot、Spring cloud):

@Bean
    public MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() {
    	MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
    	//设置日期格式
    	ObjectMapper objectMapper = new ObjectMapper();
    	SimpleDateFormat smt = new SimpleDateFormat("yyyy-MM-dd");
    	objectMapper.setDateFormat(smt);
    	mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);
    	//设置中文编码格式
    	List<MediaType> list = new ArrayList<MediaType>();
    	list.add(MediaType.APPLICATION_JSON_UTF8);
    	mappingJackson2HttpMessageConverter.setSupportedMediaTypes(list);
    	return mappingJackson2HttpMessageConverter;
    }
 

 

注意:Spring3.x 用MappingJacksonHttpMessageConverter

   Spring4.x 用MappingJackson2HttpMessageConverter

配置在XML(SpringMVC)

 

<mvc:annotation-driven >
		<mvc:message-converters>     
			
			<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
				<property name="objectMapper">
					<bean class="com.fasterxml.jackson.databind.ObjectMapper">
						<property name="dateFormat">
							<bean class="java.text.SimpleDateFormat">
								<constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />
							</bean>
						</property>
					</bean>
				</property>
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>
 

java代码中

  1. @Component("customObjectMapper")

  2. public class CustomObjectMapper extends ObjectMapper {

  3.  
  4. public CustomObjectMapper() {

  5. CustomSerializerFactory factory = new CustomSerializerFactory();

  6. factory.addGenericMapping(Date.class, new JsonSerializer<Date>() {

  7. @Override

  8. public void serialize(Date value, JsonGenerator jsonGenerator,

  9. SerializerProvider provider) throws IOException, JsonProcessingException {

  10. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  11. jsonGenerator.writeString(sdf.format(value));

  12. }

  13. });

  14. this.setSerializerFactory(factory);

  15. }

  16. }

 

 

 

 

注意:如果想要单个bean的某个日期字段显示年月日时分秒的话,只需要在对应日期的get方法上添加@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")即可。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值