后台date类型转换为json字符串时,返回前台页面的是long time值问题解决
2017-09-01 11:32
946 查看
昨天做个分析基金的查询页面,由于没用公司搭建的框架和封装的一套东西,自己搭建的有些问题注意不到,就遇到了后台查询的日期格式的结果返回到页面变成了日期的时间戳了。然后摸索了两种方法来解决。页面的显示问题如下图。
问题页面回顾:
本例环境和框架:maven工程+ssm框架+jdk1.7+tomcat7.0
解决方案:
解决方案分为两种:
第一种:如果bo(实体类)对应的字段(日期)类型为Date类型,用Jackson的注解@JsonFormat。
第二种:如果bo(实体类)对应的字段(日期)类型为String类型,则在set方法上用字符串截取方式。下面具体来说。
一个非常重要的点就是jackson的依赖引入。我一开始就用的注解,就是jar包没引入完整导致不成功!需要的jar包是:
这时整个项目用到的所有jackson有关的jar包:
1.2 在查询映射对应的实体类(bo)对应变量或者该变量的get方法上加上注解@JsonFormat
完成以上两步就可以了。在页面可以现实正常的时间格式:
这里就不用引入上面说的依赖。对应的pom.xml引入依赖仅留下这一个:
对应的jar包如下:
2.2 在查询映射对应的实体类(bo)对应变量或者该变量的set方法上截取字符串为yyyy-MM-dd类型。
完成这两步也就可以实现同样正常日期格式的页面效果。
1.实体类bo的get,set方法除了我们主动调用来为其赋值取值或者改变值外,实际我们每次从数据库查询出结果,返回到前台页面都会隐形用到这些方法。
我们按条件查询时,查询条件我们主动调用set方法封装到bo中,等查询出结果后,框架会主动调用set方法,把查询出来的key-value形式的值赋值给对应映射的实体bo的属性上。当返回页面现实每个bo信息时,框架会主动调用bo的get方法去取值。
所以,我们会在get方法上加上jackson注解,让日期格式经处理后在返回到页面。我们在set方法上会先处理查询出来的数据,然后赋值给bo.
2.关于数据库字段为日期类型时,我们对应的bo其实有两个选择。用Date类型或者String类型都是可以的。实际数据库中我们自己写sql时,为日期类型赋值不也是 jijintime) values(‘2017-03-29’)这种字符串形式嘛。所以不一定用Date。两外注意,一定不能在bo中用timestamp来作为属性的类型。这个忘了为啥了,反正不支持。
问题页面回顾:
本例环境和框架:maven工程+ssm框架+jdk1.7+tomcat7.0
解决方案:
解决方案分为两种:
第一种:如果bo(实体类)对应的字段(日期)类型为Date类型,用Jackson的注解@JsonFormat。
第二种:如果bo(实体类)对应的字段(日期)类型为String类型,则在set方法上用字符串截取方式。下面具体来说。
1.用Jackson的注解@JsonFormat
1.1 引入jackson的jar包一个非常重要的点就是jackson的依赖引入。我一开始就用的注解,就是jar包没引入完整导致不成功!需要的jar包是:
jackson-core.jar,jackson-databind.jar,jackson-annotations.jar,下面是pom.xml中引入的jackson依赖:
<dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.8.8</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.8</version> </dependency>
这时整个项目用到的所有jackson有关的jar包:
1.2 在查询映射对应的实体类(bo)对应变量或者该变量的get方法上加上注解@JsonFormat
import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; public class JiJinBo { private Date jiJinTime; //设置时区为上海时区,时间格式自己据需求定。 @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8") public Date getJiJinTime() { return jiJinTime; } public void setJiJinTime(Date jiJinTime) { this.jiJinTime = jiJinTime; }
完成以上两步就可以了。在页面可以现实正常的时间格式:
2.在set方法上用字符串截取方式
2.1 关于jackson依赖这里就不用引入上面说的依赖。对应的pom.xml引入依赖仅留下这一个:
<dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency>
对应的jar包如下:
2.2 在查询映射对应的实体类(bo)对应变量或者该变量的set方法上截取字符串为yyyy-MM-dd类型。
import java.util.Date; public class JiJinBo { private String jiJinTime; public String getJiJinTime() { return jiJinTime; } public void setJiJinTime(String jiJinTime) { this.jiJinTime = jiJinTime.substring(0,10); }
完成这两步也就可以实现同样正常日期格式的页面效果。
3.总结
本次问题解决的关键是理解为什么要在get方法上加注解就能解决日期现实问题和在set方法上加上字符串截取就可以实现同样的效果?1.实体类bo的get,set方法除了我们主动调用来为其赋值取值或者改变值外,实际我们每次从数据库查询出结果,返回到前台页面都会隐形用到这些方法。
我们按条件查询时,查询条件我们主动调用set方法封装到bo中,等查询出结果后,框架会主动调用set方法,把查询出来的key-value形式的值赋值给对应映射的实体bo的属性上。当返回页面现实每个bo信息时,框架会主动调用bo的get方法去取值。
所以,我们会在get方法上加上jackson注解,让日期格式经处理后在返回到页面。我们在set方法上会先处理查询出来的数据,然后赋值给bo.
2.关于数据库字段为日期类型时,我们对应的bo其实有两个选择。用Date类型或者String类型都是可以的。实际数据库中我们自己写sql时,为日期类型赋值不也是 jijintime) values(‘2017-03-29’)这种字符串形式嘛。所以不一定用Date。两外注意,一定不能在bo中用timestamp来作为属性的类型。这个忘了为啥了,反正不支持。
相关文章推荐
- JSON(3):Java的Date类型转换为符合json语法的字符串遇到的问题及其解决办法
- js前台传递json字符串数组到后台有后台转换成list集合或其他格式的问题解决
- springmvc/springboot处理前台字符串日期自动转换成后台date类型的三种办法
- jquery与后台进行数据交互--前台发单一数据对象,后台返回一个json字符串 serlet配置页面
- 关于java中long类型的数据转换json传到前台时丢失精度问题的解决办法
- jquery与后台进行数据交互--前台发单一数据对象,后台返回一个json字符串 jsp页面
- Struts2中的JSON问题——后台返回JSON字符串到前台
- Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法
- SSM框架:解决后台传数据到前台中文乱码问题,使用@ResponseBody返回json 中文乱码
- struts2:JSON在struts中的应用(JSP页面中将对象转换为JSON字符串提交、JSP页面中获取后台Response返回的JSON对象)
- 解决SpringMvc前台传Date类型到后台报400错误问题
- Spring中@ResponseBody 返回json字符串date类型变成long型的问题
- spring boot 解决后台返回 json 到前台出现中文乱码的问题
- ajax后台返回json,后台有Date类型变量被封装进json,非正常结束问题
- springmvc/springboot处理前台字符串日期自动转换成后台date类型的三种办法
- 后台返回一个string类型的json格式数据,前台js如何读取?
- 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
- 使用 google gson 转换Timestamp或Date类型为JSON字符串.
- 下载文件名字乱码问题,json_encode解决Ajax 返回字符串数据不显示问题
- ashx页面返回json字符串|jQuery 的ajax处理请求的纠结问题