是否有可能使用Gson或JAVA上任何其他库将匿名对象类型序列化为JSON?
Object objResult = new Object() { boolean success = true; String email="mail@gmail.com"; }; String jsonstr = gson.toJson(objResult);
在此示例中,字符串jsonstr返回空值。
oo7oh9g91#
Gson不支持该功能。从user guide与内部类、匿名类和局部类中的外部类对应的字段将被忽略,并且不包括在序列化或反序列化中您可以使用Class(或其他Type)表示匿名类型的超类来描述使用重载的toJson(Object, Type)方法序列化的内容,但是您仍然会丢失匿名子类中定义的任何新字段。(显然,对于Object,这没有任何作用,因为Object没有字段。)
Class
Type
toJson(Object, Type)
Object
qpgpyjmq2#
如果使用MyClass(){{}}内联语法,则使用Gson.toJson(obj,type)重载方法。
MyClass obj = new MyClass(){{}}; new Gson.toJson(obj, obj.getClass().getSuperclass())
匿名类名称包含$ letter。因此,要获得准确的类,请使用
Type type = obj.getClass(); while(type.toString.Contains("$")) type = ((Class)type).getSuperclass(); new Gson.toJson(obj, type);
2条答案
按热度按时间oo7oh9g91#
Gson不支持该功能。从user guide
与内部类、匿名类和局部类中的外部类对应的字段将被忽略,并且不包括在序列化或反序列化中
您可以使用
Class
(或其他Type
)表示匿名类型的超类来描述使用重载的toJson(Object, Type)
方法序列化的内容,但是您仍然会丢失匿名子类中定义的任何新字段。(显然,对于Object
,这没有任何作用,因为Object
没有字段。)qpgpyjmq2#
如果使用MyClass(){{}}内联语法,则使用Gson.toJson(obj,type)重载方法。
匿名类名称包含$ letter。因此,要获得准确的类,请使用