chinabluedolphin 2009-01-07 22:03
浏览 401
已采纳

使用json-lib的JSONObject.toBean( )时碰到的日期属性转换的问题

今天碰到这样一个问题:

当前台以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的相关文档。
问题补充:


本来是发帖子的,怎么被系统自动转到问答栏目来了,估计是题目没起好,叫了个“。。。问题”,见笑了。
  • 写回答

4条回答 默认 最新

  • Candyut 2009-01-08 11:47
    关注

    :x
    楼主来。。。分给我吧。。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)