今天碰到這樣一個問題:
當前臺以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
轉換時並不拋出例外,而是在日誌中打出如下警告信息:
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