Java中如何將json字符串轉換成map/list
將json字符串轉換成map/list
import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.codehaus.jettison.json.JSONArray; import org.codehaus.jettison.json.JSONObject; public class JsonStr2MapOrList { /** * 以"{"開頭的jsonStr轉map,map里面有l(wèi)ist,list里面還裝有map */ @SuppressWarnings("rawtypes") public static Map<String, Object> jsonStr2Map(String jsonStr) throws Exception { Map<String, Object> map = new HashMap<String, Object>(); if (!jsonStr.isEmpty()) { JSONObject json = new JSONObject(jsonStr); Iterator i = json.keys(); while (i.hasNext()) { String key = (String) i.next(); String value = json.getString(key); if (value.indexOf("{") == 0) { map.put(key.trim(), jsonStr2Map(value)); } else if (value.indexOf("[") == 0) { map.put(key.trim(), jsonStr2List(value)); } else { map.put(key.trim(), value.trim()); } } } return map; } /** * 以"["開頭的String轉list,list里裝有map */ public static List<Map<String, Object>> jsonStr2List(String jsonStr) throws Exception { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); JSONArray ja = new JSONArray(jsonStr); for (int j = 0; j < ja.length(); j++) { String jm = ja.getString(j); if (jm.indexOf("{") == 0) { Map<String, Object> m = jsonStr2Map(jm); list.add(m); } } return list; } /** * jsonStr和Map之間的轉換, jsonStr和List之間的轉換 * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // 1.jsonStr和Map之間的轉換 Map<String, Object> map = new HashMap<String, Object>(); map.put("key1", "val1"); map.put("key2", "val2"); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map1 = new HashMap<String, Object>(); Map<String, Object> map2 = new HashMap<String, Object>(); map1.put("key11", "val11"); map1.put("key21", "val21"); map2.put("key111", "val111"); map2.put("key211", "val211"); list.add(map1); list.add(map2); map.put("keyList", list); System.out.println("原始的map:" + map); String map2JsonStr = map.toString(); System.out.println("map2JsonStr:" + map2JsonStr); Map<String, Object> jsonStr2Map = jsonStr2Map(map2JsonStr); System.out.println("jsonStr2Map:" + jsonStr2Map); // 2.jsonStr和List之間的轉換 List<Object> list_ = new ArrayList<Object>(); list_.add(map); String list_Str = list_.toString(); System.out.println("list_Str:" + list_Str); List<Map<String, Object>> listM = jsonStr2List(list_Str); System.out.println("listM:" + listM); } }
輸出結果:
原始的map:{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}
map2JsonStr:{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}
jsonStr2Map:{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}
list_Str:[{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}]
listM:[{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}]
字符串,json,Map互相轉換(各種轉換都有)
前提:使用jar包為fastjson
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject;
程序如下
? ? ? ? Map map = new HashMap(); ?? ??? ?map.put("AAA", "1"); ?? ??? ?map.put("BBB", "2"); ?? ??? ?map.put("CCC", "3"); ?? ??? ?System.out.println("map=>"+map); ?? ??? ? ?? ??? ?//1.map轉string ?? ??? ?String jsonString = JSON.toJSONString(map); ?? ??? ?System.out.println("mapToString=>"+jsonString); ?? ??? ?//2.map轉jsonObject? ?? ??? ?JSONObject JSONObj = JSONObject.parseObject(JSON.toJSONString(map)); ?? ??? ?System.out.println("mapToJSON=>"+JSONObj); ?? ??? ? ?? ??? ?//3.String轉jsonObject ?? ??? ?String jsonString2 = "{\"AAA\":\"1\",\"CCC\":\"3\",\"BBB\":\"2\"}"; ?? ??? ?JSONObject parseObject = JSONObject.parseObject(jsonString2); ?? ??? ?System.out.println("StringToJson=>"+parseObject); ?? ??? ?//4.String轉map ?? ??? ?Map stringToMap = ?JSONObject.parseObject(jsonString2);? ?? ??? ?System.out.println("StringToMap=>"+stringToMap); ?? ??? ? ?? ??? ?String str = "{\"age\":\"24\",\"name\":\"summer\"}"; ?? ??? ?JSONObject ?jsonObject = JSONObject.parseObject(str); ?? ??? ?//5.jsonObject轉map ?? ??? ?Map jsonToMap = ?JSONObject.parseObject(jsonObject.toJSONString());? ?? ??? ?System.out.println("jsonToMap=>"+jsonToMap); ?? ??? ?//6.jsonObject轉String ?? ? ? ?String jsonString3 = jsonObject.toJSONString(); ?? ? ? ?System.out.println("jsonToString=>"+jsonString3);
結果如下
map=>{AAA=1, CCC=3, BBB=2}
mapToString=>{"AAA":"1","CCC":"3","BBB":"2"}
mapToJSON=>{"AAA":"1","CCC":"3","BBB":"2"}
StringToJson=>{"AAA":"1","CCC":"3","BBB":"2"}
StringToMap=>{"AAA":"1","CCC":"3","BBB":"2"}
jsonToMap=>{"name":"summer","age":"24"}
jsonToString=>{"name":"summer","age":"24"}
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Spring Boot與Kotlin 整合全文搜索引擎Elasticsearch的示例代碼
本篇文章主要介紹了Spring Boot與Kotlin 整合全文搜索引擎Elasticsearch的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01Spring Boot中整合Spring Security并自定義驗證代碼實例
本篇文章主要介紹了Spring Boot中整合Spring Security并自定義驗證代碼實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04java中Scanner.next()和Scanner.nextLine的區(qū)別圖文詳解
使用java語言編程,最常用的輸入就是使用Scanner了,它的構造很簡單,這篇文章主要給大家介紹了關于java中Scanner.next()和Scanner.nextLine區(qū)別的相關資料,需要的朋友可以參考下2024-02-02詳解Java?SSM項目部署上線配置方法(阿里云服務器ECS?+?云數據庫RDS?MySQL)(寶塔)
這篇文章主要介紹了Java?SSM項目部署上線(阿里云服務器ECS?+?云數據庫RDS?MySQL)(寶塔)的圖文教程,本文通過圖文并茂的形式給大家介紹的非常詳細,感興趣的朋友一起看看吧2024-01-01Springboot使用@RefreshScope注解實現配置文件的動態(tài)加載
本文主要介紹了Springboot使用@RefreshScope注解實現配置文件的動態(tài)加載,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09java自定義任務類定時執(zhí)行任務示例 callable和future接口使用方法
Callable是類似于Runnable的接口,實現Callable接口的類和實現Runnable的類都是可被其它線程執(zhí)行的任務2014-01-01Java?POI導出Excel時合并單元格沒有邊框的問題解決
這篇文章主要給大家介紹了關于Java?POI導出Excel時合并單元格沒有邊框的問題解決辦法,文中通過代碼介紹的非常詳細,對大家學習或者使用java具有一定的參考學習價值,需要的朋友可以參考下2023-07-07