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

时间:2014-11-07 00:01:50

标签: java json gson

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

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

String jsonstr = gson.toJson(objResult);

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

2 个答案:

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