Springmvc研究笔记- json -返回json的日期格式
(1)输出json数据
Json输出可以通过使用springmvc中的jackson-mapper-asl来完成。配置有几个要点:
1.使用MVC :注释驱动
2.在依赖关系管理中添加jackson-mapper-asl
依赖groupIdorg.codehaus.jackson/groupId人工智能杰克逊-映射器-ASL/人工智能版本$ {jackson。版本}/版本/相关性3。使用注释@ResponseBody
默认情况下,MVC :注释驱动加载json转换器。添加上述依赖包后,我们可以使用annotation @ResponseBody返回json数据,例如:
@ request mapping(' JSON ')@ response body公共列表用户用户列表(model map model map){ user example=new user example();example.createCriteria()。andUsernameIsNotNull();列表用户用户=用户映射器。选择示例(示例);返回用户;} (2)格式化json输出的日期格式
虽然上面输出的是json,但是json的日期类型的属性都是长值。就像在页面上取出国外的日期格式一样,我们需要增加一个格式转换,将日期格式转换成想要的格式:yyyy-MM-dd。
1.使用@ jsonformat(模式=' yyyy-mm-DD hh :mm 3360s ',时区=' gmt8 ')
将@ jsonformat(模式=' yyyy-mm-ddhh 3360mm 3360s ',时区=' gmt8 ')添加到实体类的getter方法中,以格式化json的日期。
第一次尝试总是失败,但是添加了完整的依赖包后成功了。我需要添加以下依赖项:
!- json数据-依赖关系groupIdorg.codehaus.jackson/groupId artifactId Jackson-mapper-ASL/artifactId version $ { Jackson . version }/version/依赖关系依赖关系group idcom . fasterxml . Jackson . core/group id artifactIdjackson-core/artifactId version $ { Jackson . core . version }/version/依赖关系依赖关系group idcom . fasterxml . Jackson . core/group id artifactIdjackson-data bind/artifactId version $ { Jackson . core . version }/version/依赖关系属性的优势Jackson。版本1 . 9 . 13/杰克逊。version Jackson . core . version 2 . 4 . 2/Jackson . core . version/properties简单方便,但缺点是需要在每个所需属性的getter方法上添加。从宏观上看,它很繁琐,但在实际开发中,只有一行代码。唯一不好的是mybatis会自动生成实体类来覆盖它。
2.继承对象映射器以返回json字符串
以上方法虽然简单方便,但缺点也很明显。自动代码生成将覆盖实体类,并且必须手动添加每个日期属性。实际上,日期属性通常是必需的。因此可以进行全局处理,格式统一。这里需要说明的是,数据库中的日期和时间戳都会被mybatis转换成日期对象。至于生日精确到天,时间精确到秒的格式规范,显示层可以处理。统一为yyyy-mm-DD hh :mm 3360s
mapping jacksonhtpmessageconverter主要通过ObjectMapper返回json字符串。这里我们继承这个类并注册一个JsonSerializerT。然后将自定义对象映射器注入配置文件。
2.1编写子类来继承ObjectMapper
打包。演示。常见。乌提尔。转换器;导入组织。科德豪斯。杰克逊。jsongenerator导入组织。科德豪斯。杰克逊。jsonprocessingexception导入组织。科德豪斯。杰克逊。地图。jsonserializer导入组织。科德豪斯。杰克逊。地图。对象映射器;导入组织。科德豪斯。杰克逊。地图。序列化程序提供程序;导入组织。科德豪斯。杰克逊。地图。爵士。customserializerfactory导入Java。io。ioexception导入Java。文字。SimpleDateformat导入Java。乌提尔。日期;/** * 解决日期类型返回json格式为自定义格式*由管理员于2016年2月14日创建*/公共类CustomJsonDateConverter扩展了对象映射器{ public CustomJsonDateConverter(){ customserializer工厂工厂=new customserializer工厂();工厂。addgenericmapping(日期。类,新的JsonSerializerDate(){ @重写公共void序列化(Date值,JsonGenerator jsonGenerator,SerializerProvider提供程序)引发IOException { simple date format SDF=new simple date format(' yyyyy-MM-DD hh 3360MM 3360s ');jsongenerator。WriteString(SDF。格式(值));} });this.setSerializerFactory(工厂);}}2.2配置春天文件
MVC :注释驱动的MVC :消息-转换器豆类=' org。弹簧框架。http。转换器。JSON。映射jacksonhtpmessageconverter '属性名称=' object mapper ' ref=' customObjectMapper '/属性/bean/MVC :消息-转换器/MVC 3360注释驱动的bean id=' customObjectMapper ' class=' com。演示。常见。乌提尔。转换器。customjsondateconverter '/bean 2.3显示层自主决定日期类型长度
这个配置无法和上一个@JsonFormat共同使用。由于全局统一了日期格式,日期和日期时间以及时间戳都是一个格式,如果生日等日期字段需要精简,只能在显示层裁剪。
3.使用内置的日期格式化工具
同样是全局设置json响应的日期格式,但此方法可以和@JsonFormat共存,也就是说可以全局设置一个格式,特定的需求可以使用注解设置。
3.1配置春天文件
MVC :注释驱动!-处理responseBody里面日期类型-MVC :消息转换器bean class=' org。弹簧框架。http。转换器。JSON。映射杰克逊2 httpmessageconverter '属性名=“对象映射器”bean类=“com”。快速接收毫升。杰克逊。数据绑定。“对象映射器”属性名=' dateFormat ' bean类=' Java。文字。“simpledateformat”构造函数-arg类型='java.lang.String '值=' yyyyy-MM-DD hh :m 3360s '/bean/property/bean/property/bean配置特定的日期
@JsonFormat(模式='yyyy-MM-dd ',时区=' GMT ' 8)公众日期getboration(){返回出生;} 3.3最终
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。