blog遷移至:[url=http://www.micmiu.com]http://www.micmiu.com[/url]
JSON 即 JavaScript Object Natation,它是一種輕量級的資料交換格式,非常适合于伺服器與 JavaScript 的互動。本文主要講解下java和JSON之間的轉換,特别是[color=red]解決互相轉換遇到日期問題和指定屬性的過濾[/color]。
一、需要相關的jar包:
json-lib-xxx.jar
ezmorph-xxx.jar
commons-httpclient-xxx.jar
commons-lang-xxx.jar
commons-logging-xxx.jar
commons-collections-xxx.jar
上面的包可以從下面的連接配接下載下傳:
[url=http://commons.apache.org/index.html]http://commons.apache.org/index.html[/url]
[url=http://json-lib.sourceforge.net]http://json-lib.sourceforge.net[/url]
[url=http://ezmorph.sourceforge.net]http://ezmorph.sourceforge.net[/url]
二、java-》JSON
1.[color=red]List-》JSON[/color]
列印結果:[color=blue]list->json:["apple","orange"][/color]
2.[color=red]Map-》JSON[/color]
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "Michael");
map.put("baby", new String[] { "Lucy", "Lily" });
map.put("age", 30);
JSONObject jo = JSONObject.fromObject(map);
System.out.println("map->json:" + jo.toString());
列印結果:[color=blue]map->json:{"age":30,"name":"Michael","baby":["Lucy","Lily"]}[/color]
3.[color=red]bean->JSON[/color]
列印結果:[color=blue]bean->json:{"age":1,"born":{"date":10,"day":3,"hours":14,"minutes":14,"month":2,"seconds":1,"time":1268201641228,"timezoneOffset":-480,"year":110},"name":"NewBaby"}[/color]
4.[color=red]bean->JSON 日期轉換[/color]
[color=red]上面的例子中你會發現它把bean對象裡的util.Date這個類型的所有屬性一一轉換出來。在實際運用過程中,大多數情況下我們希望能轉化為yyyy-MM-dd這種格式[/color],下面就講一講如何實作:
首先要寫一個新的類[color=red]JsonDateValueProcessor[/color]如下:
測試代碼:
列印結果:[color=blue]bean->json:{"age":1,"born":"2010-03-10","name":"NewBaby"}[/color]
這就能得到我們想要的結果了。
4.[color=red]java->JSON 過濾指定的屬性[/color]
JsonBean bean = new JsonBean();
bean.setName("NewBaby");
bean.setAge(1);
bean.setBorn(new Date());
jo = JSONObject.fromObject(bean);
JsonConfig jsonConfig = new JsonConfig();
PropertyFilter filter = new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
if ("born".equals(name)) {
return true;
}
return false;
}
};
jsonConfig.setJsonPropertyFilter(filter);
njo = JSONObject.fromObject(bean, jsonConfig);
System.out.println("bean->json [add property filter] :"
+ njo.toString());
列印結果:bean->json [add property filter] :{"age":1,"name":"NewBaby"}
從執行結果可以看出:born 這個屬性已經成功過濾掉了。
三、JSON-》java
1.[color=red]如何把json的yyyy-MM-dd的轉換為Bean中的util.Date類型[/color]:
列印結果:
[color=blue]1984-01-12[/color]
[color=blue]1990-05-01[/color]
2. [color=red]JSON-》List、 Map[/color]
列印結果:
[color=blue]apple[/color]
[color=blue]orange[/color]
[color=blue]name Michael[/color]
[color=blue]age 30[/color]
[color=blue]baby [Lucy, Lily][/color]