java中對象轉json,json轉list,json轉map


 

在IDEA中的springboot項目里寫的一個測試例子,新建User類,四個字段,Long id , String password,String userName,int age; 以及帶參構造,toString方法

在pom.xml中添加 net.sf.json-lib  依賴:

1 <!-- 對象轉json依賴包 -->
2         <!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
3         <dependency>
4             <groupId>net.sf.json-lib</groupId>
5             <artifactId>json-lib</artifactId>
6             <version>2.4</version>
7             <!--不加下面這一項會報錯,是因為json-lib支持版本是jdk1.5,所以要指定下版本-->
8             <classifier>jdk15</classifier>
9         </dependency>

json轉換測試類:

  1 package com.lch.springboot04.jsonparse;
  2 
  3 import com.lch.springboot04.domain.User;
  4 import net.sf.json.JSONArray;
  5 import net.sf.json.JSONObject;
  6 
  7 import java.util.*;
  8 
  9 /**
 10  * 對象轉換為json數據測試,通過net.sf.json-lib.jar
 11  */
 12 public class JsonParse {
 13 
 14     public static void main(String[] args) {
 15         /**
 16          *  object 轉為json數組 :數組,對象,map,list,list<Map<String,Object>> 都可以 17          *  object 轉為json字符串:只有 自定義對象 和 map可以轉換,其他都不能這樣轉;
 18          */
 19 
 20         String[] arr = {"a", "b", "c"};
 21         System.out.println("string數組轉為json數組" + JSONArray.fromObject(arr)); //["a","b","c"]
 22 //        System.out.println("string數組轉為json字符串"+ JSONObject.fromObject(arr).toString()); //無法轉換:'object' is an array. Use JSONArray instead
 23 
 24         //java自定義對象轉json
 25         User jack = new User("123", "jack", 18);
 26         System.out.println("Java對象轉為json數組" + JSONArray.fromObject(jack));
 27         //結果:[{"age":18,"id":0,"password":"123","userName":"jack"}]
 28         System.out.println("Java對象轉為json字符串" + JSONObject.fromObject(jack).toString());
 29         //結果:{"age":18,"id":0,"password":"123","userName":"jack"}
 30 
 31         //list轉json
 32         User tom = new User("456", "tom", 20);
 33         List<User> userList = new ArrayList<>();
 34         userList.add(jack);
 35         userList.add(tom);
 36         System.out.println("list轉為json數組" + JSONArray.fromObject(userList));
 37 //        結果:list轉為json數組[{"age":18,"id":0,"password":"123","userName":"jack"},{"age":20,"id":0,"password":"456","userName":"tom"}]
 38 //        System.out.println("list轉為json字符串"+ JSONObject.fromObject(userList).toString()); //不能轉為json字符串
 39 
 40 //        list<Map<String,Object>> 轉json
 41         List<Map<String, Object>> mapList = new ArrayList();
 42         Map<String, Object> m1 = new HashMap<String, Object>();
 43         m1.put("jack", jack);
 44         m1.put("tom", tom);
 45         Map<String, Object> m2 = new HashMap<String, Object>();
 46         m2.put("alex", new User("789", "alex", 20));
 47         mapList.add(m1);
 48         mapList.add(m2);
 49         System.out.println("map轉json數組" + JSONArray.fromObject(m2));
 50 //        轉換結果:[{"alex":{"age":20,"id":0,"password":"789","userName":"alex"}}]
 51         System.out.println("map轉json字符串" + JSONObject.fromObject(m2));
 52         //結果:{"alex":{"age":20,"id":0,"password":"789","userName":"alex"}}
 53         System.out.println(" list<Map<String,Object>> 轉json數組" + JSONArray.fromObject(mapList));
 54 // 結果:[{"tom":{"age":20,"id":0,"password":"456","userName":"tom"},"jack":{"age":18,"id":0,"password":"123","userName":"jack"}},{"alex":{"age":20,"id":0,"password":"789","userName":"alex"}}]
 55 //        System.out.println(" list<Map<String,Object>> 轉json字符串"+JSONObject.fromObject(mapList));//不能轉,'object' is an array. Use JSONArray instead
 56 
 57         /**
 58          * json字符串轉map
 59          */
 60      /*   String jsonStr = "{\"alex\":{\"age\":20,\"id\":0,\"password\":\"789\",\"userName\":\"alex\"}}";
 61         Map<String,Object> map = jsonToMap(JSONObject.fromObject(jsonStr).get("alex").toString());
 62         System.out.println("json字符串轉map:"+map.get("age"));*/
 63 //        {"total":2,"items":[{"age":15,"id":1,"name":"jack"},{"age":16,"id":2,"name":"tom"}]}
 64         String jsonStr2 = "{\"total\":2,\"items\":[{\"age\":15,\"id\":1,\"userName\":\"jack\"},{\"age\":16,\"id\":2,\"userName\":\"tom\"}]}";
 65         Map<String, Object> stringObjectMap = jsonToMap(jsonStr2);
 66         for (Map.Entry<String, Object> entry : stringObjectMap.entrySet()) {
 67             System.out.println(entry.getKey() + "--" + entry.getValue());
 68         }
 69         /**輸出結果:
 70          * total--2
 71          items--[{"age":15,"id":1,"userName":"jack"},{"age":16,"id":2,"userName":"tom"}]
 72          */
 73 
 74 //        jsonstr轉list,list中存放Java Bean
 75         String jsonStr3 = JSONObject.fromObject(jsonStr2).get("items").toString();
 76         System.out.println("jsonStr3=" + jsonStr3);
 77         List list = jsonStr2ObjectList(jsonStr3, User.class);
 78         for (Object u : list) {
 79             System.out.println(u);
 80         }
 81         /**
 82          * 輸出User{id=1, password='null', userName='jack', age=15}
 83          User{id=2, password='null', userName='tom', age=16}
 84          */
 85 
 86     }
 87 
 88     /**
 89      * json字符串轉map  90      *
 91      * @param jsonStr
 92      * @return
 93      */
 94     public static Map<String, Object> jsonToMap(String jsonStr) {
 95         JSONObject jsonObject = JSONObject.fromObject(jsonStr); //首先轉換為 JSONObject
 96         Iterator<String> nameItr = jsonObject.keys();//獲取jsonObject的keySet()的迭代器
 97         String key;//接收key值
 98         Map<String, Object> outMap = new HashMap<>(); //存放轉換結果
 99         while (nameItr.hasNext()) {
100             key = nameItr.next();
101             outMap.put(key, jsonObject.get(key));
102         }
103         return outMap;
104     }
105 
106     /**
107      * JSONObject類中keys()方法默認返回jsonObject的keyset的迭代器
108      * public Iterator keys() {
109      * this.verifyIsNull();
110      * return this.keySet().iterator();
111      * }
112      */
113 
114     /** json轉list,list中存放JavaBean
115      * @param jsonStr 要轉換的json字符串
116      * @param clazz   javaBean的Class對象
117      * @return
118      */
119     public static List jsonStr2ObjectList(String jsonStr, Class clazz) {
120         JSONArray array = JSONArray.fromObject(jsonStr);
121         List list = new ArrayList();
122         for (Iterator itr = array.iterator(); itr.hasNext(); ) {
123             JSONObject jsonObject = (JSONObject) itr.next();
124             //取出json字符串中的一個子字符串,轉換為指定類型的JavaBean
125             Object bean = JSONObject.toBean(jsonObject, clazz);
126             list.add(bean);
127         }
128         return list;
129     }
130 }

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM