如何使用GSON将地图地图转换为JSON,然后返回?

时间:2015-07-12 13:42:58

标签: java json maps gson

我有一个Map<Integer, Map<Class<?>, Serializable>>,我试图将其存储为JSON字符串。然后,稍后,我试图从相同的JSON格式的字符串中读取以重新创建对象。你会如何使用GSON做到这一点?

2 个答案:

答案 0 :(得分:1)

而不是使用Map of Map尝试使用类结构。

或者您可以使用以下库来实现相同目的。

com.google.gson.Gson.Gson()

使用以下方法:

public static String getJSONString(Object jsonObject)
{
    if(jsonObject == null) return "";
    return new Gson().toJson(jsonObject);
}

答案 1 :(得分:0)

在尝试序列化Map<Integer, Map<Class<?>, Serializable>>时,您根本不会遇到任何问题,问题是在尝试反序列化JSON时。我想你可以为Class<?>编写自己的反序列化器,具体取决于你的实际需要,但不能反序列化Serializable

Serializable不是具体的类,它是一个接口。您无法实例化Serializable,只能实例化实现Serializable的具体类。当然,你可以通过在序列化的JSON中包含具体的类信息来为Serializable编写自己的自定义序列化器/反序列化器,但是你需要包含所有可能实现Serializable的类,这根本不可行。

参考:https://sites.google.com/site/gson/gson-user-guide#TOC-Serializing-and-Deserializing-Collection-with-Objects-of-Arbitrary-Types