使用json-lib的JSONObject.toBean( )时碰到的日期属性转换的问题
2024-10-21 11:44:41
今天碰到这样一个问题:
当前台以JSON格式向后台传递数据的时候,对于数据中的日期属性,无法正常转换为相应的Date属性。
JSON数据是这样的:
{"birthday":"1980/01/01","name":"testname"}
我要转换成的类是这样的:
- public class Person {
- private String name;
- private Date birthday;
- public void setName(String name) {
- this.name = name;
- }
- public String getName() {
- return name;
- }
- public void setBirthday(Date birthday) {
- this.birthday = birthday;
- }
- public Date getBirthday() {
- return birthday;
- }
- }
转换的代码是这样的:
- JSONObject jsonPerson = JSONObject.fromObject(personData); //personaData是json串
- Person person = (Person)JSONObject.toBean(jsonPerson, Person.class);
转换时并不抛出例外,而是在日志中打出以下警告信息:
Can't transform property 'birthday' from java.lang.String into java.util.Date. Will register a default Morpher
在网上搜了一遍,发现了很多关于进行相反方向转换时的帖子,即使用json-lib将bean转成json串时,日期属性的格式不符合习惯,后来好不容易才找到了这个问题的解决办法,虽然是抄别人的,但也发一贴为以后其他人更容易找到答案出点力,呵呵。废话少说,其实解决方法很简单,把转换代码改成这样:
- JSONObject jsonPerson = JSONObject.fromObject(personData);
- String[] dateFormats = new String[] {"yyyy/MM/dd"};
- JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
- Person person = (Person)JSONObject.toBean(jsonPerson, Person.class);
想深究原因的人可以参看json-lib和ezmorpher的相关文档。
最新文章
- Windows+Caffe+VS2013+python接口配置过程
- 局部打印插件 jquery.PrintArea.js
- Atiti 重定向标准输出到字符串转接口adapter stream流体系 以及 重定向到字符串
- clang LLVM 介绍和安装(Ubuntu10 64位)
- Linux jdk1.7安装与 jdk1.6卸载
- JS 中面向对象的5种写法
- EWM一个仓库号对应ERP多个PLANT的配置
- Java正常关闭资源的方式
- JAVA·多线程:创建线程的两种方式
- uva 10652 Board Wrapping
- OC基础4:类和方法
- SMTP协议分析
- 第一回:Scrapy的试水
- 如何通过Mock API提高APP开发效率?
- Android版数据结构与算法(五):LinkedHashMap核心源码彻底分析
- 在keil中添加stc系列单片机型号(模型)方法
- C# 之 Structure 和 Class的区别
- docker 应用-4(swarm模式搭建集群)
- odoo开发笔记 -- 多个视图共用一个模型
- mysql错误:this authentication plugin is not supported