Gson - Serializing Inner Classes Example

In this article, we will discuss how to serialization/deserialization of classes having inner classes.

Nested Inner Class example

Let's see an example of serialization/de-serialization of class with an inner class in action.
package net.javaguides.gson;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

/**
 * 
 * @author Ramesh Fadatare
 *
 */
public class GSONNestedClassesExample {
    public static void main(String[] args) {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();

        OuterClass outerClass = new OuterClass();
        outerClass.setValue1("value1");
        outerClass.setValue2("value2");

        OuterClass.InnerClass innerClass = outerClass.new InnerClass();
        innerClass.value3 = "value3";
        innerClass.value4 = "value4";
        outerClass.setInnerClass(innerClass);

        String jsonStr = gson.toJson(outerClass);
        System.out.println(jsonStr);
    }

}

class OuterClass {
    private String value1;
    private String value2;
    private InnerClass innerClass;

    public String getValue1() {
        return value1;
    }

    public void setValue1(String value1) {
        this.value1 = value1;
    }

    public String getValue2() {
        return value2;
    }

    public void setValue2(String value2) {
        this.value2 = value2;
    }

    public void setInnerClass(InnerClass innerClass) {
        this.innerClass = innerClass;
    }

    public InnerClass getInnerClass() {
        return innerClass;
    }

    class InnerClass {
        public String value3;
        public String value4;

    }
}
Output:
{
  "value1": "value1",
  "value2": "value2",
  "innerClass": {
    "value3": "value3",
    "value4": "value4"
  }
}

Nested Static Inner Class Example

Let's see an example of serialization/de-serialization of class with a static inner class in action.
package net.javaguides.gson;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

/**
 * 
 * @author Ramesh Fadatare
 *
 */
public class GSONNestedClassesExample {
    public static void main(String[] args) {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();

        OuterClass outerClass = new OuterClass();
        outerClass.setValue1("value1");
        outerClass.setValue2("value2");

        OuterClass.InnerClass innerClass = new OuterClass.InnerClass();
        innerClass.value3 = "value3";
        innerClass.value4 = "value4";
        outerClass.setInnerClass(innerClass);

        String jsonStr = gson.toJson(outerClass);
        System.out.println(jsonStr);
    }

}

class OuterClass {
    private String value1;
    private String value2;
    private InnerClass innerClass;

    public String getValue1() {
        return value1;
    }

    public void setValue1(String value1) {
        this.value1 = value1;
    }

    public String getValue2() {
        return value2;
    }

    public void setValue2(String value2) {
        this.value2 = value2;
    }

    public void setInnerClass(InnerClass innerClass) {
        this.innerClass = innerClass;
    }

    public InnerClass getInnerClass() {
        return innerClass;
    }

    static class InnerClass {
        public String value3;
        public String value4;

    }
}
Output:
{
  "value1": "value1",
  "value2": "value2",
  "innerClass": {
    "value3": "value3",
    "value4": "value4"
  }
}

Reference

/div>

Comments