jaxb util

JaxB可以处理Java.util.Date序列化,但是需要以下格式: “ yyyy-MM-ddTHH:mm:ss ”。 如果需要将日期对象格式化为另一种格式怎么办?

我有同样的问题时,我正在同春MVC 3和Jackson JSON处理器 ,最近,我遇到了同样的问题与Spring MVC 3和工作JAXB用于XML序列化 。

让我们来探讨这个问题:

问题:

我有以下Java Bean,要使用Spring MVC 3以XML进行序列化:

package com.loiane.model;import java.util.Date;public class Company {private int id;private String company;private double price;private double change;private double pctChange;private Date lastChange;//getters and setters

我还有另一个对象将上面的POJO包装起来:

package com.loiane.model;import java.util.List;import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement(name="companies")
public class Companies {@XmlElement(required = true)private List<Company> list;public void setList(List<Company> list) {this.list = list;}
}

在我的Spring控制器中,我将通过@ResponseBody批注返回一个公司列表-这将使用JaxB自动序列化该对象:

@RequestMapping(value="/company/view.action")
public @ResponseBody Companies view() throws Exception {}

当我调用controller方法时,这就是返回视图的内容:

<companies><list><change>0.02</change><company>3m Co</company><id>1</id><lastChange>2011-09-01T00:00:00-03:00</lastChange><pctChange>0.03</pctChange><price>71.72</price></list><list><change>0.42</change><company>Alcoa Inc</company><id>2</id><lastChange>2011-09-01T00:00:00-03:00</lastChange><pctChange>1.47</pctChange><price>29.01</price></list>
</companies>

注意日期格式。 它不是我希望它返回的格式。 我需要以以下格式序列化日期:“ MM-dd-yyyy解决方案:

我需要创建一个扩展XmlAdapter的类并重写marshalunmarshal方法,在这些方法中,我将根据需要设置日期格式:

package com.loiane.util;import java.text.SimpleDateFormat;
import java.util.Date;import javax.xml.bind.annotation.adapters.XmlAdapter;public class JaxbDateSerializer extends XmlAdapter<String, Date>{private SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");@Overridepublic String marshal(Date date) throws Exception {return dateFormat.format(date);}@Overridepublic Date unmarshal(String date) throws Exception {return dateFormat.parse(date);}
}

在我的Java Bean类中,我只需要在date属性的get方法中添加@XmlJavaTypeAdapter批注。

package com.loiane.model;import java.util.Date;import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;import com.loiane.util.JaxbDateSerializer;public class Company {private int id;private String company;private double price;private double change;private double pctChange;private Date lastChange;@XmlJavaTypeAdapter(JaxbDateSerializer.class)public Date getLastChange() {return lastChange;}//getters and setters
}

如果我们尝试再次调用controller方法,它将返回以下XML:

<companies><list><change>0.02</change><company>3m Co</company><id>1</id><lastChange>09-01-2011</lastChange><pctChange>0.03</pctChange><price>71.72</price></list><list><change>0.42</change><company>Alcoa Inc</company><id>2</id><lastChange>09-01-2011</lastChange><pctChange>1.47</pctChange><price>29.01</price></list>
</companies>

问题解决了!

编码愉快!

参考:来自Loiane Groner博客博客的JCG合作伙伴 Loiane Groner提供的JAXB自定义绑定– Java.util.Date/Spring 3序列化 。

翻译自: https://www.javacodegeeks.com/2012/06/jaxb-custom-binding-javautildate-spring.html

jaxb util

jaxb util_JAXB自定义绑定– Java.util.Date / Spring 3序列化相关推荐

  1. JAXB自定义绑定– Java.util.Date / Spring 3序列化

    JaxB可以处理Java.util.Date序列化,但是需要以下格式: " yyyy-MM-ddTHH:mm:ss ". 如果需要将日期对象格式化为另一种格式怎么办? 我有同样的问 ...

  2. spring:Failed to convert property value of type ‘java.lang.String‘ to required type ‘java.util.Date‘

    前言 springboot有接口日期转换的经典问题,给Entity加@JsonFormat解决了输出json日期格式的输入输出问题,但是解决不了非@RequestBody/也就是普通表单提交的日期格式 ...

  3. 将符合ISO 8601的字符串转换为java.util.Date

    我正在尝试将ISO 8601格式的String转换为java.util.Date . 如果与区域设置(比较示例)一起使用,我发现模式yyyy-MM-dd'T'HH:mm:ssZ符合ISO8601. 但 ...

  4. 选择日期保存报错Invalid JSON input: Cannot deserialize value of type `java.util.Date` from String......

    (spring boot + vue) 1.新增-选择日期-点击保存-报错:报错信息 "Invalid JSON input: Cannot deserialize value of typ ...

  5. 在java.time.LocalDateTime和java.util.Date之间进行转换

    本文翻译自:Converting between java.time.LocalDateTime and java.util.Date Java 8 has a completely new API ...

  6. 【Java异常】Cannot deserialize value of type `java.util.Date` from String “2020-04-27T19:43:05.000+0800

    本文目录 一.背景描述 二.现象描述 三.错误原因 四.解决方案 一.背景描述 环境:SpringCloud Fegin调用 服务端(被调用者):返回了一个JSON对象,其中有一个createTime ...

  7. class java.time.LocalDateTime cannot be cast to class java.util.Date

    现象: 采样springboot 2.3.11.RELEASE + liqubase 是报错 org.springframework.beans.factory.BeanCreationExcepti ...

  8. 【踩坑专栏】JSON parse error: Cannot deserialize value of type `java.util.Date` from String

    出现这种报错的原因是无法将Date字符串解析为Date类型,之前我的做法是在需要转换的字段上标注注解@DateFormatPatter和@JsonFormat 这一次我懒得一个个的标了,因为是自己做的 ...

  9. Failed to convert value of type ‘java.lang.String‘ to required type ‘java.util.Date‘;

    在Java的controller中添加一个方法即可解决 /*** 解决:Failed to convert value of type 'java.lang.String' to required t ...

最新文章

  1. 【力扣网练习题】删除排序数组中的重复项
  2. 最近发现了好多好资源,赶紧收藏一下!【粒子特效】
  3. android okhttp 多线程,android – Okhttp Authenticator多线程
  4. ECC-based 算法(ECDSA/ECDH) 新潮算法的原理
  5. RHEL4-VNC服务配置
  6. 使用python+ffmpeg批量转换格式
  7. sql中聚合函数和分组函数_SQL选择计数聚合函数-语法示例解释
  8. idea中tomcat服务器的配置
  9. Javascript、Jquery获取浏览器和屏幕各种高度宽度
  10. android 数据持久化——I/O操作
  11. nginx服务器能ping通,访问不了的解决办法
  12. 挑战程序设计竞赛学习笔记2
  13. 《Unix编程艺术》chm 电子书下载
  14. 离散傅里叶变换终极推导
  15. 镜像加速器——使用加速器可以提升获取Docker官方镜像的速度
  16. 健身房有哪些令人讨厌的行为?
  17. 【uni-app】uni-app-微信小程序项目笔记
  18. 菩提本无树,明镜亦非台
  19. p5.js实现细胞免疫动画
  20. Python根据Excel名单实现文件夹下文件批量改名

热门文章

  1. win7禁用其他软件只启用自定义软件的方法
  2. 三大框架题目整合考试题(含详解)
  3. 涨知识 | 100个中国最难读的地名,第一个就折了
  4. JS重写toString(),打印想要的值
  5. drawroundrect java_Canvas中drawRoundRect()方法介绍
  6. nginx负载均衡与反向代理
  7. ibatis(1)ibatis的理念
  8. idea内置junit5_JUnit 5和Selenium –使用Selenium内置的`PageFactory`实现页面对象模式
  9. camel apache_Apache Camel 3 –新增功能前10名
  10. bom .dom_MicroProfile 2.2 BOM导入支持