天天看點

Json-lib 的學習筆記

json 按照我的了解來說,就是一個字串表,可以用來表示對象的字元串,也可以用來表示數組。它比 xml 檔案節省了很多标簽的内容。

關于什麼是 json,在這裡我們就不過多介紹了。

Json-lib 是一個 Java 類庫(官網:http://json-lib.sourceforge.net/)可以實作如下功能:

1、轉換 javabeans、maps、collections、 Java arrays 和 XML 成為 json 格式資料:

2、轉換 json 格式資料成為 javabeans 對象。

Json-lib 的 jar 包貌似不太好找,我在這裡提供了一個版本,僅供參考。不過個人建議,還是從官網下載下傳 jar 包會好一點,畢竟這也是一種能力。

Json-lib的基本jar包.rar

Json-lib 需要的 jar 包:

(1)commons-beanutils-1.8.3.jar

(2)commons-collections-3.2.1.jar

(3)commons-lang-2.6.jar

(4)commons-logging-1.1.1.jar

(5)ezmorph-1.0.6.jar

(6)json-lib-2.4-jdk15.jar

第一部分:将 Java 對象轉換成 JSON 格式(字元串)

1、處理多個對象(數組、集合 List 或者 Set)

将“數組”類型的對象轉換成 JSON 格式

JSONArray.fromObject(傳入一個“數組”類型的對象);      

說明:這裡的數組對象可以是 Array、對象數組,集合類(Set集合);

2、處理單個對象(Map 或者 JavaBean)

将 Map類型的對象,或者單個的 JavaBean 或者嵌套的對象轉換成 JSON 格式;

JSONObject.fromObject(傳入一個 Map類型的對象,或者單個的 JavaBean 或者嵌套的對象);      

3、使用 JsonConfig 過慮屬性:适用于 JavaBean、Map;

示例代碼:

JsonConfig config = new JsonConfig();
config.setExcludes(new String[] { "name" }); // 指定在轉換時不包含哪些屬性
Person person = new Person("A001", "Jack");
SONObject jsonObject = JSONObject.fromObject(person, config); // 在轉換時傳入之前的配置對象
System.out.println(jsonObject);      

第二部分:将 JSON 格式(字元串)的資料轉換成 Java 對象

1、處理多個對象

将 JSON 格式的字元串轉換成 Array:

JSONArray jsonArray = JSONArray.fromObject("[89,90,99]");
Object array = JSONArray.toArray(jsonArray);
System.out.println(array);
System.out.println(Arrays.asList((Object[]) array));      

2、處理單個對象

将 Json 串轉成 JavaBean 和 Map:

核心的方法:

(1)将 Json 形式的字元串轉換為 Map:

JSONObject jsonObject = JSONObject.fromObject(str);
Map<String, Object> map = (Map<String, Object>) JSONObject.toBean(jsonObject, Map.class);      

(2)将 Json 形式的字元串轉換為 JavaBean:

jsonObject = JSONObject.fromObject(str);
Person person = (Person) JSONObject.toBean(jsonObject, Person.class);      

注意:在将 Json 形式的字元串轉換為 JavaBean 的時候需要注意 JavaBean 中必須有無參構造函數,否則會報找不到初始化方法的錯誤。

參考資料:

1、Json 和 Jsonlib 的使用 - sunzn - 部落格園

http://www.cnblogs.com/sunzn/archive/2013/02/12/2910241.html

說明:可以作文入門級别的使用教程,本身 Json-lib 就不難。

2、

JSON-lib架構,轉換JSON、XML不再困難 - hoojo - 部落格園

http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html

3、

java對象與json對象間的互相轉換 - gchb9527的專欄 - 部落格頻道 - CSDN.NET

http://blog.csdn.net/gchb9527/article/details/8688279

4、

Json lib 教程 - OPEN 開發經驗庫

http://www.open-open.com/lib/view/open1326597921734.html

5、