日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

List、Map 与json转换的工具类

發布時間:2024/3/13 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 List、Map 与json转换的工具类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近做公司項目安排做后臺,因為寫接口給別人用,就不能隨隨便便返回數據與接收數據了,為了統一性,要求統一用json來傳輸數據,為了方便后期的代碼的維護以及代碼的簡潔,筆者整理了一下json與List、Map之間相互轉換的方法統一封裝成一個類,需要的拿走

所需的jar包:請自行搜索相關的jar包

下面是筆者整理的工具類,喜歡的拿走吧~

package com.utils;import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.collections.map.ListOrderedMap; import net.sf.json.JSONArray; import net.sf.json.JSONObject;/*** * 處理json的工具類. <br>* 本類為處理json的工具類* * @author ahk*/ public class JsonTools {/*** * json轉換list. <br>* 詳細說明* * @param jsonStr* json字符串* @return* @return List<Map<String,Object>> list* @throws @author* ahk* @date 2013年12月24日 下午1:08:03*/public static List<Map<String, Object>> parseJSON2List(String jsonStr) {JSONArray jsonArr = JSONArray.fromObject(jsonStr);List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Iterator<JSONObject> it = jsonArr.iterator();while (it.hasNext()) {JSONObject json2 = it.next();list.add(parseJSON2Map(json2.toString()));}return list;}/*** * json轉換map. <br>* 詳細說明* * @param jsonStr* json字符串* @return* @return Map<String,Object> 集合* @throws @author* ahk*/public static Map<String, Object> parseJSON2Map(String jsonStr) {ListOrderedMap map = new ListOrderedMap();// 最外層解析JSONObject json = JSONObject.fromObject(jsonStr);for (Object k : json.keySet()) {Object v = json.get(k);// 如果內層還是數組的話,繼續解析if (v instanceof JSONArray) {List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Iterator<JSONObject> it = ((JSONArray) v).iterator();while (it.hasNext()) {JSONObject json2 = it.next();list.add(parseJSON2Map(json2.toString()));}map.put(k.toString(), list);} else {map.put(k.toString(), v);}}return map;}/*** * 通過HTTP獲取JSON數據. <br>* 通過HTTP獲取JSON數據返回list* * @param url* 鏈接* @return* @return List<Map<String,Object>> list* @throws @author* ahk*/public static List<Map<String, Object>> getListByUrl(String url) {try {// 通過HTTP獲取JSON數據InputStream in = new URL(url).openStream();BufferedReader reader = new BufferedReader(new InputStreamReader(in));StringBuilder sb = new StringBuilder();String line;while ((line = reader.readLine()) != null) {sb.append(line);}return parseJSON2List(sb.toString());} catch (Exception e) {e.printStackTrace();}return null;}/*** * 通過HTTP獲取JSON數據. <br>* 通過HTTP獲取JSON數據返回map* * @param url* 鏈接* @return* @return Map<String,Object> 集合* @throws @author* ahk*/public static Map<String, Object> getMapByUrl(String url) {try {// 通過HTTP獲取JSON數據InputStream in = new URL(url).openStream();BufferedReader reader = new BufferedReader(new InputStreamReader(in));StringBuilder sb = new StringBuilder();String line;while ((line = reader.readLine()) != null) {sb.append(line);}return parseJSON2Map(sb.toString());} catch (Exception e) {e.printStackTrace();}return null;}/*** * map轉換json. <br>* 詳細說明* * @param map* 集合* @return* @return String json字符串* @throws @author* ahk*/public static String mapToJson(Map<String, Object> map) {JSONObject jsonarray = JSONObject.fromObject(map); return jsonarray.toString().trim();}/*** * List<Map<String, Object>>轉換json. <br>* 詳細說明* * @param List* 集合* @return* @return String json字符串* @throws @author* ahk*/public static <T> String listToJson(List<T> ts) {JSONArray jsonarray = JSONArray.fromObject(ts); return jsonarray.toString().trim();}// testpublic static void main(String[] args) {String jsonStr = "{\"ordersale\":\"15066226204\",\"o_name\":\"咖喱雞\",\"orderpeople\":\"15621182793\",\"pay_status_id\":2,\"o_img1\":\"http://niu.dingdao8.com/FtsRcfTvrQkF953DWfTUH6xDNDh3\",\"goodsList\":[{\"goods_name\":\"德炎 麻辣小龍蝦 900g 6-8錢/12-17只 海鮮水產\",\"goods_rule\":\"{}\",\"o_order_id\":\"20181009093210953000\",\"gid\":162,\"goods_price\":36.0,\"goods_select\":\"{}\",\"goods_count\":2,\"detail_id\":30,\"goods_img\":\"http://niu.dingdao8.com/BEC6DD2740914D23975CDF26409AEFD7_CD4A997F457041A19F37C3690DA41212_龍蝦1.jpg\"}],\"o_img2\":\"無\",\"o_consignee\":\"ahk\",\"oid\":164,\"enterprise_id\":3082,\"o_regtime\":1539048732000,\"o_cycle\":27,\"payamount\":0.0,\"o_type\":2,\"o_desc\":\"him紅\",\"o_order_id\":\"20181009093210953000\",\"order_arrears\":72.0,\"o_money\":72.0,\"o_phone\":\"15621182793\",\"o_img3\":\"無\",\"o_img4\":\"無\",\"o_address\":\"西海岸一號407\",\"OrderModify\":[{\"o_order_id\":\"20181009093210953000\",\"updatecontent\":\"來了\",\"updatetype\":1,\"o_modifier\":\"15066226204\",\"updatetime\":1539048783000},{\"o_order_id\":\"20181009093210953000\",\"updatecontent\":\"72.0\",\"updatetype\":0,\"updatetime\":1539048825000},{\"o_order_id\":\"20181009093210953000\",\"updatecontent\":\"你好\",\"updatetype\":1,\"o_modifier\":\"15066226204\",\"updatetime\":1539049122000}],\"o_ctime\":1539048732000}";Map<String, Object> list = parseJSON2Map(jsonStr);System.out.println(list);String json1 = "[{\"goods_name\":\"小米電視4A32英寸\",\"goods_rule\":[{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"驍龍845旗艦處理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"驍龍845旗艦處理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"驍龍845旗艦處理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"驍龍845旗艦處理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"驍龍845旗艦處理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"驍龍845旗艦處理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"驍龍845旗艦處理器\":550}],\"gid\":153,\"goods_price\":999,\"goods_select\":[{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"驍龍845旗艦處理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"驍龍845旗艦處理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"驍龍845旗艦處理器\":550}],\"goods_count\":1}]";List<Map<String, Object>> list2 = parseJSON2List(json1);System.out.println(list2);String json = mapToJson(list);System.out.println(json.trim());String jsonList = listToJson(list2);System.out.println(jsonList);} }

寫的不好,大家湊活看,如果有什么好的建議,請大家留言交流,共同進步~

總結

以上是生活随笔為你收集整理的List、Map 与json转换的工具类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。