我正在尝试使用通用对象执行地图的json转换器。 假设您有以下示例:
class MyClass1
{
String v1;
Boolean v2;
}
class MyClass2
{
Integer v3;
String v4;
}
class MyContainer
{
Map<String, Object>lst;
MyContainer() {
lst = new HashMap<String, Object>();
}
}
public main() {
MyContainer c1, c2;
Gson g = new Gson();
c1 = new MyContainer();
MyClass1 my1 = new MyClass1();
MyClass2 my2 = new MyClass2();
my1.v1 = "v1";
my1.v2 = true;
my2.v3 = 10;
my2.v4="v4";
c1.lst.put("MyClass1", my1);
c1.lst.put("MyClass2", my2);
String json = g.toJson(c1);
c2 = g.fromJson(json, MyContainer.class);
当我使用g.ToJson时,我有良好的json结果但是,当我调用g.fromJson时,它显然不能很好地转换,因为它无法理解必须使用哪个类来映射输入json。 事实上,c2.lst.get(“MyClass1”)不会返回MyClass1的实例,而是返回com.google.gson.internal.StringMap