• 使用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文件。

  • 相关阅读:
    25计算机考研院校数据分析 | 浙江大学
    什么是S参数?它有哪些主要类型?
    基于WPF技术的换热站智能监控系统08--实现右上模式控制
    LInux - mini_shell
    软件测试神仙文档,连阿里面试官都说太详细了,搞懂这些直接是P7级
    maven
    高通cDSP简单编程例子(实现查询高通cDSP使用率、签名),RK3588 npu使用率查询
    用Rust打印hello world!
    CSP-S 2023 游记
    用户级协议和框架:DPDK、SPDK和VPP的业务场景和发展趋势
  • 原文地址:https://blog.csdn.net/neweastsun/article/details/128004654