Gson-序列化内部类

本文介绍如何使用Gson对成员内部类及静态内部类进行序列化/反序列化。

1 Gson处理成员内部类

1.1 编写核心类

MainApp:

package com.yiidian.gson;

import com.google.gson.Gson;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class MainApp {

    public static void main(String args[]) {

        Student student = new Student();
        student.setRollNo(1);
        Student.Name name = student.new Name();

        name.firstName = "Mahesh";
        name.lastName = "Kumar";
        student.setName(name);
        Gson gson = new Gson();

        //序列化
        String jsonString = gson.toJson(student);
        System.out.println(jsonString);
        //反序列化
        student = gson.fromJson(jsonString, Student.class);

        System.out.println("Roll No: "+ student.getRollNo());
        System.out.println("First Name: "+ student.getName().firstName);
        System.out.println("Last Name: "+ student.getName().lastName);

        String nameString = gson.toJson(name);
        System.out.println(nameString);

        name = gson.fromJson(nameString,Student.Name.class);
        System.out.println(name.getClass());
        System.out.println("First Name: "+ name.firstName);
        System.out.println("Last Name: "+ name.lastName);
    }

}

class Student {
    private int rollNo;
    private Name name;

    public int getRollNo() {
        return rollNo;
    }

    public void setRollNo(int rollNo) {
        this.rollNo = rollNo;
    }

    public Name getName() {
        return name;
    }

    public void setName(Name name) {
        this.name = name;
    }

    //成员内部类
    class Name {
        public String firstName;
        public String lastName;
    }
}

1.2 运行测试

2 Gson处理静态内部类

2.1 编写核心类

MainApp:

package com.yiidian.gson;

import com.google.gson.Gson;

/**
 * 一点教程网 - http://www.yiidian.com
 */
public class MainApp {

    public static void main(String args[]) {

        Student student = new Student();
        student.setRollNo(1);
        Student.Name name = new Student.Name();

        name.firstName = "Mahesh";
        name.lastName = "Kumar";
        student.setName(name);

        Gson gson = new Gson();
        String jsonString = gson.toJson(student);
        System.out.println(jsonString);
        student = gson.fromJson(jsonString, Student.class);

        System.out.println("Roll No: "+ student.getRollNo());
        System.out.println("First Name: "+ student.getName().firstName);
        System.out.println("Last Name: "+ student.getName().lastName);
        String nameString = gson.toJson(name);
        System.out.println(nameString);

        name = gson.fromJson(nameString,Student.Name.class);
        System.out.println(name.getClass());
        System.out.println("First Name: "+ name.firstName);
        System.out.println("Last Name: "+ name.lastName);
    }

}

class Student {
    private int rollNo;
    private Name name;

    public int getRollNo() {
        return rollNo;
    }

    public void setRollNo(int rollNo) {
        this.rollNo = rollNo;
    }

    public Name getName() {
        return name;
    }

    public void setName(Name name) {
        this.name = name;
    }

    //静态内部类
    static class Name {
        public String firstName;
        public String lastName;
    }
}

2.2 运行测试

热门文章

优秀文章