• 使用GSON把数据保存为json格式文件


    GSON 是转换java对象为JSON格式的库,也支持其他功能更,如转换json字符串为java对象。本文介绍使用gson保存不同java数据类型为json格式文件。

    增加依赖

    首先增加gson依赖:

    
        com.google.code.gson
        gson
        2.8.5
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    保存数据为json格式文件

    使用 GSON类的 toJson(Object src, Appendable writer) 方法可以转换java 数据类型值json,并保存至文件。Gson()构造函数使用缺省配置创建Gson对象:

    Gson gson = new Gson();
    
    • 1

    现在可以调用toJson方法转换并存储java对象,下面通过示例查看不同数据类型的转换。

    基本数据类型

    使用Gson保存基本数据类型,相当直接简单:

    gson.toJson(123.45, new FileWriter(filePath));
    
    • 1

    这里filepath表示文件位置,文件输出内容仅包含基本数据类型的值:

    123.45
    
    • 1

    自定义类型

    当然也可以存储自定义类型对象为json格式。首先创建User类型:

    public class User {
        private int id;
        private String name;
        private transient String nationality;
    
        public User(int id, String name, String nationality) {
            this.id = id;
            this.name = name;
            this.nationality = nationality;
        }
        
        public User(int id, String name) {
            this(id, name, null);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    现在存储User对象为json:

    User user = new User(1, "Tom Smith", "American");
    gson.toJson(user, new FileWriter(filePath));
    
    • 1
    • 2

    文件输出为:

    {"id":1,"name":"Tom"}
    
    • 1

    如果字段标记为transient,gson默认会忽略,json序列化和反序列化过程中不会包括该字段。因此输出中没有出现nationality字段。

    缺省情况下,gson忽略null值字段,举例:

    gson.toJson(new User(1, null, "Unknown"), new FileWriter(filePath));
    
    • 1

    输出结果为:

    {"id":1}
    
    • 1

    如果需要保留null字段,请继续往下浏览。

    集合类型

    我们可以使用类似方式存储集合对象:

    User[] users = new User[] { new User(1, "Mike"), new User(2, "Tom") };
    gson.toJson(users, new FileWriter(filePath));
    
    • 1
    • 2

    输出结果如下:

    [{"id":1,"name":"Mike"},{"id":2,"name":"Tom"}]
    
    • 1

    使用GsonBuilder

    如果需要调整gson的默认配置,可以使用GsonBuilder类型。该类使用构建模式,首先调用各种配置方法来设置所需的选项,最后调用create()方法:

    Gson gson = new GsonBuilder()
      .setPrettyPrinting()
      .create();
    
    • 1
    • 2
    • 3

    这里设置规范化输出选项,它缺省为false.类似的设置null值字段序列化,可以调用serializeNulls()方法,更多选项可以参考官方文档

    再看一个示例,支持自定义序列化类型,其他设置的属性基本也是自解释的:

    Gson gson = new GsonBuilder()
      .setPrettyPrinting()
      .excludeFieldsWithoutExposeAnnotation()
      .serializeNulls()
      .disableHtmlEscaping()
      .registerTypeAdapter(ActorGson.class, new ActorGsonSerializer())
      .create();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    总结

    本文介绍使用gson库把java不同数据类型序列化为json文件。

  • 相关阅读:
    MySQL (8)
    LCD液晶显示屏常见类型和接口
    Linux移动文件夹(文件)到其他文件夹 / 复制到其他文件夹 【cp / mv命令】
    00后程序员,2023年终总结
    古诗词学习平台小程序毕业设计
    一文详细讲解JAVA开发中的XML
    计算机等级考试—信息安全三级真题三
    算法+二分查找+冒泡排序+位运算【Interview】
    云原生系列 【轻松入门容器基础操作】
    .NET MAUI 8月最新资讯
  • 原文地址:https://blog.csdn.net/neweastsun/article/details/128004654