概述
序列化:将数据结构或对象转换成可用于存储或者传输的数据格式的过程;
反序列化:将序列化过程中生成的数据还原成数据结构或者对象的过程;
对于数据的序列化与反序列化,Gson框架一直是我的首选。自己封装了一套Retrofit+OkHttp+RxAndroid的简易框架,其中的数据解析一直用的是Gson。由于Retrofit框架内部已经完成了对Gson序列化与反序列化的操作封装,一直少有接触Gson真正的序列化与反序列化操作,至于阅读源码什么的,就更不可能了。趁着最近有点空余的时间,赶紧去Gson官网看了看,写点笔记,补补这部分的空缺。(原谅我对于Gson的操作一直是停留了toGson(),fromGson()这两个Api的)。写完这个系列的博客,我希望我对Gson认知能够达到的水准为
- Gson的基本使用
- Gson的进阶自定义序列化与反序列化
- Gson的源码分析序列化与反序列化过程
- 解决自己在开发中遇到数据解析难题
基本使用
1.Android Studio 导包
dependencies {
compile 'com.google.code.gson:gson:2.8.5'
}
2.基本类型数据
基本数据类型的序列化与反序列化操作都比价简单
Gson gson = new Gson();
gson.toJson(new Character('a')); // ==>"a"
gson.toJson(1); // ==>1
gson.toJson(1.0f); // ==>1.0
gson.toJson(1.0d); // ==>1.0
gson.toJson(1l); // ==>1
gson.toJson(true); // ==>true
gson.toJson("hello world"); // ==>"hello world"
gson.fromJson("\'a\'", char.class); // ==> a
gson.fromJson("1", int.class); // ==>1
gson.fromJson("1.0", float.class); // ==>1.0
gson.fromJson("1.0", double.class); // ==>1.0
gson.fromJson("1", long.class); // ==>1
gson.fromJson("true", boolean.class); // ==>true
gson.fromJson("\"hello world\"", String.class); // ==>hello world
对于那些具备自动封箱操作的基本数据类型只要他们反序列化的数据源一样,则生成的对象也是一样的
Integer one = gson.fromJson("1", in