Gson如何序列化内部类

 更新时间:2020年11月02日 15:08:59   作者:一点教程  
本文介绍如何使用Gson对成员内部类及静态内部类进行序列化/反序列化,帮助大家更好的理解和使用gson库,感兴趣的朋友可以了解下

1 Gson处理成员内部类

1.1 编写核心类

MainApp:

package com.yiidian.gson;

import com.google.gson.Gson;

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;


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 运行测试

以上就是Gson如何序列化内部类的详细内容,更多关于gson 序列化的资料请关注脚本之家其它相关文章!

相关文章

  • SpringBoot实现分页功能

    SpringBoot实现分页功能

    这篇文章主要为大家详细介绍了SpringBoot实现分页功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 简单谈谈JVM、JRE和JDK的区别与联系

    简单谈谈JVM、JRE和JDK的区别与联系

    简单的说JDK是用于开发的而JRE是用于运行Java程序的。JDK和JRE都包含了JVM,从而使得我们可以运行Java程序。JVM是Java编程语言的核心并且具有平台独立性。
    2016-05-05
  • java如何连接数据库executeUpdate()和executeQuery()

    java如何连接数据库executeUpdate()和executeQuery()

    这篇文章主要介绍了java如何连接数据库executeUpdate()和executeQuery(),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • eclipse实现可认证的DH密钥交换协议

    eclipse实现可认证的DH密钥交换协议

    这篇文章主要介绍了eclipse实现可认证的DH密钥交换协议,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • springboot对象为null的属性在json中不显示的解决

    springboot对象为null的属性在json中不显示的解决

    这篇文章主要介绍了springboot对象为null的属性在json中不显示的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Java中request对象常用方法汇总

    Java中request对象常用方法汇总

    这篇文章主要为大家详细汇总了Java中request对象的常用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • JAVA设计模式---单例模式你知道吗

    JAVA设计模式---单例模式你知道吗

    这篇文章主要给大家介绍了关于Java单例模式,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2021-09-09
  • IDEA maven项目依赖无法解析问题

    IDEA maven项目依赖无法解析问题

    这篇文章主要介绍了IDEA maven项目依赖无法解析问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 很详细的Log4j配置步骤

    很详细的Log4j配置步骤

    Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。
    2008-11-11
  • Java中线程休眠编程实例

    Java中线程休眠编程实例

    这篇文章主要介绍了Java中线程休眠编程实例,本文直接给出代码实例,并对休眠方法做了一番讲解,需要的朋友可以参考下
    2015-06-06

最新评论