Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert Anonymous java object types to JSON using GSon

Tags:

java

json

gson

is there any possibility to serialize anonymous object type to JSON using Gson or any else library on JAVA ?

Object objResult = new Object() {
                boolean success = true;
                String  email="[email protected]";
            };

String jsonstr = gson.toJson(objResult);

In this example, the string jsonstr returns a null value.

like image 614
AHméd Net Avatar asked Nov 07 '14 00:11

AHméd Net


2 Answers

Gson doesn't support that feature. From the user guide

Fields corresponding to the outer classes in inner classes, anonymous classes, and local classes are ignored and not included in serialization or deserialization

You can use a Class (or other Type) representing the superclass of the anonymous type to describe what to serialize using the overloaded toJson(Object, Type) method, but you'll still lose any new fields defined in the anonymous subclass. (Obviously, with Object, this does nothing, since Object has no fields.)

like image 146
Sotirios Delimanolis Avatar answered Oct 30 '22 04:10

Sotirios Delimanolis


If you use MyClass(){{}} inline syntax use Gson.toJson(obj, type) overloaded method.

MyClass obj = new MyClass(){{}};
new Gson.toJson(obj, obj.getClass().getSuperclass())

Anonymous class names contains $ letter. So to get exact class use

Type type = obj.getClass();
while(type.toString.Contains("$")) type = ((Class)type).getSuperclass();
new Gson.toJson(obj, type);
like image 41
cacheoff Avatar answered Oct 30 '22 04:10

cacheoff