我有一个 Map>>>> 或类似的 Map> 我需要将其转换为 JSON。
所以我的用例是转换一个可以是地图或列表的对象,它具有地图或列表的通用元素,这可以递归地进行任意次数。叶元素将是整数或字符串。
有什么现成的方法我可以在 Java 中做到这一点。
使用GSON。它是用于 JSON 序列化/反序列化的简单即插即用库。它将处理本机 Java 集合。
一旦您最终需要反序列化 JSON,它也会为您提供帮助(但是,它需要更多的努力来反序列化泛型)
您可以直接使用创建
Map<String, String> myMap = new HashMap<String, String>();
JSONObject jsonObj = new JSONObject(map);
JSONObject 由 Json.org 提供
使用 Jackson 的流 API 解析 json 并创建对象怎么样?像这样 http://www.mkyong.com/java/jackson-streaming-api-to-read-and-write-json/
public static Object jsonMapper(Object obj){
if (obj instanceof Map) {
Map map = (Map) obj;
for (Object entryobj : map.entrySet()) {
Entry entry = (Entry) entryobj;
entry.setValue(jsonMapper(entry.getValue()));
}
return new JSONObject(map);
} else if (obj instanceof List) {
List list = (List) obj;
for (int i = 0; i< list.size(); i++) {
Object o = list.get(i);
list.set(i, jsonMapper(o));
}
return new JSONArray(list);
} else { //string or integer
return obj;
}
}