我正在尝试使用 GSON 将 Map 序列化/反序列化为 JSON
我有一个由以下定义的地图
HashMap<Test, List<Something>> map =
new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
其中包括两个像这样定义的简单类
class Test {
public Test(){}
public Test(String str){test = str;}
String test;
}
class Something {
public Something(){}
public Something(String str){something = str;}
String something;
}
Run Code Online (Sandbox Code Playgroud)
和一些像这样的测试代码
List<Something> somelist = new ArrayList<Something>();
somelist.add(new Something("something1"));
somelist.add(new Something("something2"));
map.put(new Test("test1"), somelist);
Run Code Online (Sandbox Code Playgroud)
默认情况下,Gson 似乎无法序列化它并产生以下结果
{
"test.TestJsonClass$Test@15db9742": [
{
"string": "something1"
},
{
"string": "something2"
}
]
}
Run Code Online (Sandbox Code Playgroud)
然而,这有点在意料之中,然后我尝试为这样的类创建一个自定义序列化程序
Gson gson = new GsonBuilder().setPrettyPrinting()
.registerTypeAdapter(Test.class, new JsonSerializer<Test>() {
public JsonElement …Run Code Online (Sandbox Code Playgroud)