Java是一種面向?qū)ο蟮木幊陶Z言,在軟件開發(fā)中被廣泛應(yīng)用。在Java開發(fā)中,我們經(jīng)常需要將復(fù)雜的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成JSON格式,以便于傳輸和解析。其中,多層Map轉(zhuǎn)換成JSON是非常常見的操作。
多層Map轉(zhuǎn)換成JSON需要遵循一定的轉(zhuǎn)換規(guī)則,大致分為兩個(gè)步驟:創(chuàng)建一個(gè)JSONObject,遞歸地將多層Map轉(zhuǎn)換成JSONObject。
import com.alibaba.fastjson.JSONObject; import java.util.HashMap; import java.util.Map; public class MapToJsonUtils { public static JSONObject map2Json(Map map) { JSONObject json = new JSONObject(); for (Object key : map.keySet()) { Object value = map.get(key); if (value instanceof Map) { json.put((String) key, map2Json((Map) value)); //遞歸調(diào)用 } else { json.put((String) key, value); } } return json; } public static void main(String[] args) { Map map = new HashMap(); map.put("name", "Tom"); map.put("age", 20); Map address = new HashMap(); address.put("province", "Beijing"); address.put("city", "Haidian"); map.put("address", address); JSONObject json = map2Json(map); System.out.println(json.toJSONString()); } }
在上述代碼中,我們首先定義了一個(gè)靜態(tài)的map2Json()方法,該方法接收一個(gè)Map類型的參數(shù)并返回一個(gè)JSONObject。在方法中,我們遍歷Map中的所有key-value對(duì),如果value是Map類型則遞歸調(diào)用map2Json()方法,否則直接將value添加到JSONObject中。最后,返回JSONObject對(duì)象。
在main()方法中,我們定義了一個(gè)多層Map并將其轉(zhuǎn)換成JSON格式打印出來。運(yùn)行程序,輸出結(jié)果如下:
{"name":"Tom","age":20,"address":{"province":"Beijing","city":"Haidian"}}
可以看到,多層Map已經(jīng)成功轉(zhuǎn)換成了JSON格式。