Java中將JSON格式的資料轉換成對應的Bean、Map、List資料

來源:互聯網
上載者:User

簡單說明:

為了方便資料在用戶端及伺服器端的傳輸,有時候我們會用一些比較方便組織的資料類型,比如json、xml等傳給用戶端,用戶端也可以重新組織資料傳回伺服器端。JSON和XML提供了一套比較方便的資料群組織形式。。並且有很多現成的類庫用於解析這些資料。。

本文是對net.sf.json使用後的總結。。目前官方開源的對json進行處理的項目很多,fastjson還有其它等等。。視自己處理問題的複雜程度考慮選擇使用不同的依賴包。。

如果使用maven構建項目,需要對以下兩個包進行依賴

<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.2.3</version></dependency><dependency><groupId>xom</groupId><artifactId>xom</artifactId><version>1.2.5</version></dependency>

如果使用Eclipse自己構建項目,需要自己手動下載依賴包進行依賴。

樣本程式:

1.將JSON組裝的實體資料類型轉換為Java中對應的簡單Bean對象(只包含簡單的資料類型)

/** * 將json格式封裝的簡單實體類型資料轉換成簡單類型的javabean * @return */private static Object JSON2SimpleBean() {String jsonStr = "{\"age\":23,\"id\":123,\"name\":\"tt_2009\"," +"\"province\":\"上海\",\"sex\":\"男\"}";JSONObject jsonBean = JSONObject.fromObject(jsonStr);return JSONObject.toBean(jsonBean, SimpleUser.class);}

以上代碼是將Json資料串轉換成java中自訂的對應的簡單bean。SimpleUser看最後代碼附錄。

2.將JSON組裝的複雜資料轉換成複雜的java資料實體(對象中包含其它複雜物件,如收貨地址用List儲存)

/** * 將json格式封裝的複雜實體資料轉換成複雜類型的javabean * @return */private static Object JSON2ComplexBean() {String jsonStr = "{\"address\":[\"北京\",\"上海\",\"廣州\"]," +"\"age\":23,\"id\":123,\"name\":\"tt_2009\",\"province\":\"上海\",\"sex\":\"男\"}";JSONObject jsonBean = JSONObject.fromObject(jsonStr);return JSONObject.toBean(jsonBean, ComplexUser.class);}

以上代碼將json組裝的資料串轉換成java中自訂的複雜資料實體。ComplexUser看最後附錄代碼。

3.將Json資料轉換成java中的List

/** * 將json格式封裝的列表資料轉換成java的List資料 * @return */private static Object JSON2List() {String jsonArray ="[{\"age\":23,\"id\":123,\"name\":\"tt_2009_0\",\"province\":\"上海\",\"sex\":\"男\"}," +"{\"age\":24,\"id\":123,\"name\":\"tt_2009_1\",\"province\":\"上海\",\"sex\":\"男\"}," +"{\"age\":32,\"id\":123,\"name\":\"tt_2009_9\",\"province\":\"上海\",\"sex\":\"男\"}]";return JSONArray.toList(JSONArray.fromObject(jsonArray), new SimpleUser(), new JsonConfig());}

以上代碼將json組裝的資料資料轉換成java中的list資料。對更複雜的資料處理,後續文章介紹,比如處理日期等格式的資料。

4.將json資料轉換成java中的Map。(注意key只能是字串)

/** * 將json格式封裝的字串資料轉換成java中的Map資料 * @return */private static Map<String, SimpleUser> JSON2Map() {Map<String, SimpleUser> map = new HashMap<String, SimpleUser>();String jsonMapStr ="{\"tt_2009_4\":{\"age\":27,\"id\":123,\"name\":\"tt_2009_4\",\"province\":\"上海\",\"sex\":\"男\"}," +"\"tt_2009_6\":{\"age\":29,\"id\":123,\"name\":\"tt_2009_6\",\"province\":\"上海\",\"sex\":\"男\"}," +"\"tt_2009_0\":{\"age\":23,\"id\":123,\"name\":\"tt_2009_0\",\"province\":\"上海\",\"sex\":\"男\"}}";JSONObject jsonMap = JSONObject.fromObject(jsonMapStr);Iterator<String> it = jsonMap.keys();while(it.hasNext()) {String key = (String) it.next();SimpleUser u = (SimpleUser) JSONObject.toBean(JSONObject.fromObject(jsonMap.get(key)),SimpleUser.class);map.put(key, u);}return map;}

以上實現的是將json組裝的key-value格式的資料轉換成java中的map。

附錄代碼:

(setter、getter等方法省略掉了)

/** * 只包含基礎資料型別 (Elementary Data Type)的簡單實體類 * @author TT_2009 */public class SimpleUser {private int id;private String name;private String sex;private int age;private String province;}

/** * 包含複雜類型的實體類 * @author TT_2009 */public class ComplexUser extends SimpleUser {private List<String> address;public ComplexUser() {}public ComplexUser(int id, String name,String sex, int age, String province,List<String> address) {super(id, name, sex, age, province);this.address = address;}public List<String> getAddress() {return address;}public void setAddress(List<String> address) {this.address = address;}}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.