Java將Date日期類型字段轉(zhuǎn)換成json字符串的方法
想必我們在做項(xiàng)目的時(shí)候,都會遇到服務(wù)端與客戶端交互數(shù)據(jù)。一般情況下我們都會采用json格式或者xml格式,將服務(wù)端的數(shù)據(jù)轉(zhuǎn)換成這兩種格式之一。
但是,如果我們將數(shù)據(jù)轉(zhuǎn)換成json格式的時(shí)候,我們也許會遇到Date日期型的數(shù)據(jù)轉(zhuǎn)換成json格式后,并不是我們想要的格式。下面我們通過簡單的demo
來說明這個(gè)問題。
我們按照一般json格式生成,會出現(xiàn)以下問題:
采用json:將數(shù)據(jù)生成json格式,需要導(dǎo)入相應(yīng)的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;}@Overridepublic 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) {/** * 創(chuàng)建三個(gè)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集合眾的數(shù)據(jù)轉(zhuǎn)換成json格式的字符串形式*/JSONArray array = new JSONArray();array = array.fromObject(list);System.out.println(array.toString());
運(yùn)行Java應(yīng)用程序,看見在控制臺是哪個(gè)打印出了:(這里通過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字段是日期型的,并不是我們一般情況下需要的。這時(shí)候,我們就必須寫一個(gè)工具類進(jìn)行處理了。
但遇到Date類型的數(shù)據(jù)的時(shí)候,就需要進(jìn)行處理。
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對象的格式化,以及數(shù)值的格式化,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();} }
除了自定義日期格式外,還可以如法炮制,控制數(shù)值格式化、HTML內(nèi)容轉(zhuǎn)碼等。
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) {/** * 創(chuàng)建三個(gè)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集合眾的數(shù)據(jù)轉(zhuǎn)換成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());}}
運(yùn)行Java應(yīng)用程序,會得到我們期望的json格式:
[ { 'birthday': '2015-12-03', 'username': '張三' }, { 'birthday': '2015-12-03', 'username': '李四' }, { 'birthday': '2015-12-03', 'username': '王五' }]
很顯然這種日期格式,是我們經(jīng)常使用的。也方便在客戶端解析這種格式的json字符串。
總結(jié)
到此這篇關(guān)于Java將Date日期類型字段轉(zhuǎn)換成json字符串的文章就介紹到這了,更多相關(guān)Java Date日期類型字段轉(zhuǎn)json字符串內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)2. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁的方法3. php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究4. XHTML 1.0:標(biāo)記新的開端5. ASP基礎(chǔ)知識VBScript基本元素講解6. 利用CSS3新特性創(chuàng)建透明邊框三角7. XML入門的常見問題(四)8. asp(vbscript)中自定義函數(shù)的默認(rèn)參數(shù)實(shí)現(xiàn)代碼9. 詳解CSS偽元素的妙用單標(biāo)簽之美10. HTML5 Canvas繪制圖形從入門到精通
