您好,登錄后才能下訂單哦!
如何在Java中將Date日期類型的字段轉換成json字符串?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
采用json:將數據生成json格式,需要導入相應的jar包,如下圖:
Student.java
package com.xbmu.bean; import java.io.Serializable; import java.util.Date; public class Student implements Serializable { private String username; private Date birthday; public Student() { super(); // TODO Auto-generated constructor stub } public Student(String username, Date birthday) { super(); this.username = username; this.birthday = birthday; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "Student [username=" + username + ", birthday=" + birthday + "]"; } }
TestDateValueToJson.java
package com.xbmu.test; import java.util.ArrayList; import java.util.Date; import java.util.List; import net.sf.json.JSONArray; import com.xbmu.bean.Student; public class TestDateValueToJson { public static void main(String[] args) { /** * 創建三個student對象,并將對象添加到List集合中 * * */ List<Student> list = new ArrayList<Student>(); Student student = new Student("張三", new Date()); list.add(student); student = new Student("李四",new Date()); list.add(student); student = new Student("王五",new Date()); list.add(student); /**將list集合眾的數據轉換成json格式的字符串形式*/ JSONArray array = new JSONArray(); array = array.fromObject(list); System.out.println(array.toString());
運行Java應用程序,看見在控制臺是哪個打印出了:(這里通過json格式化工具處理后了,方便大家閱讀)
[ { "birthday": { "date": 3, "day": 4, "hours": 9, "minutes": 5, "month": 11, "seconds": 1, "time": 1449104701018, "timezoneOffset": -480, "year": 115 }, "username": "張三" }, { "birthday": { "date": 3, "day": 4, "hours": 9, "minutes": 5, "month": 11, "seconds": 1, "time": 1449104701018, "timezoneOffset": -480, "year": 115 }, "username": "李四" }, { "birthday": { "date": 3, "day": 4, "hours": 9, "minutes": 5, "month": 11, "seconds": 1, "time": 1449104701018, "timezoneOffset": -480, "year": 115 }, "username": "王五" } ]
雖然符合json語法格式,但是里面的birthday字段是日期型的,并不是我們一般情況下需要的。這時候,我們就必須寫一個工具類進行處理了。
但遇到Date類型的數據的時候,就需要進行處理。
package com.xbmu.utils; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import net.sf.json.JsonConfig; import net.sf.json.processors.JsonValueProcessor; /** * 自定義JsonValueProcessor * 比如我們要控制JSON序列化過程中的Date對象的格式化,以及數值的格式化,JsonValueProcessor是最好的選擇。 * @author bitaotao * */ public class JsonDateValueProcessor implements JsonValueProcessor { private String pattern = "yyyy-MM-dd"; public Object processArrayValue(Object value, JsonConfig config) { return process(value); } public Object processObjectValue(String key, Object value, JsonConfig config) { return process(value); } private Object process(Object value){ if(value instanceof Date){ SimpleDateFormat sdf = new SimpleDateFormat(pattern, Locale.UK); return sdf.format(value); } return value == null ? "" : value.toString(); } }
除了自定義日期格式外,還可以如法炮制,控制數值格式化、HTML內容轉碼等。
TestDateValueToJson.java
package com.xbmu.test; import java.util.ArrayList; import java.util.Date; import java.util.List; import net.sf.json.JSONArray; import net.sf.json.JsonConfig; import com.xbmu.bean.Student; import com.xbmu.utils.JsonDateValueProcessor; public class TestDateValueToJson { public static void main(String[] args) { /** * 創建三個student對象,并將對象添加到List集合中 * * */ List<Student> list = new ArrayList<Student>(); Student student = new Student("張三", new Date()); list.add(student); student = new Student("李四",new Date()); list.add(student); student = new Student("王五",new Date()); list.add(student); /**將list集合眾的數據轉換成json格式的字符串形式*/ JsonConfig config = new JsonConfig(); JsonDateValueProcessor jsonValueProcessor = new JsonDateValueProcessor(); config.registerJsonValueProcessor(Date.class, jsonValueProcessor); JSONArray array = new JSONArray(); array = array.fromObject(list,config); System.out.println(array.toString()); } }
運行Java應用程序,會得到我們期望的json格式:
[ { "birthday": "2015-12-03", "username": "張三" }, { "birthday": "2015-12-03", "username": "李四" }, { "birthday": "2015-12-03", "username": "王五" } ]
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。