是否有可能使用GSON或JAVA上的任何其他库将匿名对象类型序列化为JSON?
Object objResult = new Object() {
boolean success = true;
String email="mail@gmail.com";
};
String jsonstr = gson.toJson(objResult);
在此示例中,字符串jsonstr返回空值。
答案 0 :(得分:10)
Gson不支持该功能。来自user guide
与内部类中的外部类相对应的字段,匿名 类和本地类被忽略,不包括在内 序列化或反序列化
您可以使用代表匿名类型超类的Class
(或其他Type
)来描述使用重载toJson(Object, Type)
方法序列化的内容,但您仍然会失去任何匿名子类中定义的新字段。 (显然,对于Object
,这没有任何作用,因为Object
没有字段。)
答案 1 :(得分:0)
如果您使用MyClass(){{}}内联语法,请使用Gson.toJson(obj,type)重载方法。
MyClass obj = new MyClass(){{}};
new Gson.toJson(obj, obj.getClass().getSuperclass())
匿名类名包含$字母。所以要获得确切的类使用
Type type = obj.getClass();
while(type.toString.Contains("$")) type = ((Class)type).getSuperclass();
new Gson.toJson(obj, type);