2

我有一个 Map>>>> 或类似的 Map> 我需要将其转换为 JSON。

所以我的用例是转换一个可以是地图或列表的对象,它具有地图或列表的通用元素,这可以递归地进行任意次数。叶元素将是整数或字符串。

有什么现成的方法我可以在 Java 中做到这一点。

4

4 回答 4

2

使用GSON。它是用于 JSON 序列化/反序列化的简单即插即用库。它将处理本机 Java 集合。

一旦您最终需要反序列化 JSON,它也会为您提供帮助(但是,它需要更多的努力来反序列化泛型)

于 2013-09-06T08:15:03.943 回答
1

您可以直接使用创建

Map<String, String> myMap = new HashMap<String, String>();

JSONObject jsonObj = new JSONObject(map);

JSONObject 由 Json.org 提供

http://www.json.org/javadoc/org/json/JSONObject.html

于 2013-09-06T08:17:21.293 回答
0

使用 Jackson 的流 API 解析 json 并创建对象怎么样?像这样 http://www.mkyong.com/java/jackson-streaming-api-to-read-and-write-json/

于 2013-09-12T05:53:17.773 回答
0
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;
    }
}
于 2017-02-23T07:02:39.710 回答