使用GSon将匿名java对象类型转换为JSON

mklgxw1f  于 2022-11-06  发布在  Java
关注(0)|答案(2)|浏览(216)

是否有可能使用Gson或JAVA上任何其他库将匿名对象类型序列化为JSON?

Object objResult = new Object() {
                boolean success = true;
                String  email="mail@gmail.com";
            };

String jsonstr = gson.toJson(objResult);

在此示例中,字符串jsonstr返回空值。

oo7oh9g9

oo7oh9g91#

Gson不支持该功能。从user guide
与内部类、匿名类和局部类中的外部类对应的字段将被忽略,并且不包括在序列化或反序列化中
您可以使用Class(或其他Type)表示匿名类型的超类来描述使用重载的toJson(Object, Type)方法序列化的内容,但是您仍然会丢失匿名子类中定义的任何新字段。(显然,对于Object,这没有任何作用,因为Object没有字段。)

qpgpyjmq

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);

相关问题