使用json-lib的JSONObject.toBean( )時碰到的日期屬性轉換的問題

今天碰到這樣一個問題:
當前臺以JSON格式向後臺傳遞數據的時候,對於數據中的日期屬性,沒法正常轉換爲相應的Date屬性。
JSON數據是這樣的:
{"birthday":"1980/01/01","name":"testname"}java

我要轉換成的類是這樣的:json

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;
    }
}

轉換的代碼是這樣的:this

  1. JSONObject jsonPerson = JSONObject.fromObject(personData);  //personaData是json串
  2. 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.net

 

在網上搜了一遍,發現了不少關於進行相反方向轉換時的帖子,即便用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的相關文檔。code

相關文章
相關標籤/搜索