Android Gson基础使用
1.基本使用
1.1 Gson对象创建
- 1.1.1 直接通过new来创建对象
1 | //通过构造函数来获取 |
- 1.1.2 通过单利方式创建全局对象
1 | private static Gson gson = null; |
1.2 生成Json字符串
- 1.2.1 代码如下所示
1 | private void toJson() { |
- 1.2.2 addProperty方法
- 支持String,boolean,char,Number(包含:int,long,float,double,byte,short)
1 | public void addProperty(String property, String value) { |
- 1.2.3 通过 JsonObject 自己来构建一个 JsonElement
- addProperty 方法底层调用的是 add(String property, JsonElement value) 方法,即将基本数据类型转化为了 JsonElement 对象,JsonElement 是一个抽象类,而 JsonObject 继承了 JsonElement ,因此我们可以通过 JsonObject 自己来构建一个 JsonElement
1 | //注意这个方法返回JsonElement对象 |
- 1.2.4 json解析步骤
- 首先获取JSON元素数组:JSONArray jsonArray = new JSONArray(jsonData);
- 其次循环获取每个元素:JSONObject jsonObject = jsonArray.getJSONObject(index);
- 每次循环保存名称相对应的值:String name = jsonObject.getString(“name”);
1.3 Json数组转化为字符串数组
1 | private void jsonToArray() { |
1.4 toJson之字符串数组转为Json数组
1 | private void arrayToJson() { |
1.5 fromJson之Json数组转为List
1 | private void jsonToList() { |
1.6 toJson之List转为Json数组
1 | private void listToJson() { |
1.7 toJson之List转为Json数组
1 | private void listModelToJson() { |
1.8 fromJson之Json数组转为List
1 | private void jsonToListMode() { |
2.高级使用
2.1 序列化和反序列化
- Gson 也提供了 toJson() 和 fromJson() 两个方法用于转化 Model 与 Json,前者实现了序列化,后者实现了反序列化。
2.2 序列化
- 将model对象转变成json字符串
1 | private void personModelToJson() { |
2.3 反序列化
- 将json字符串转变成model对象
1 | private void jsonToPersonModel() { |
2.5 属性重命名
2.6 个性化设置
1 | gson = new GsonBuilder() //builder构建者模式 |
2.7 TypeAdapter
TypeAdapter 是一个泛型抽象类,用于接管某种类型的序列化和反序列化过程,包含两个抽象方法,分别用于自定义序列化和反序列化过程
2.7.1 举个例子
定义 TypeAdapter 的子类 UserTypeAdapter 来接管 User 类的序列化和反序列化过程
这里设定当 User 类序列化时 Json 中的Key值都是大写字母开头,反序列化时支持“name”和“Name”两种不同的 Json 风格
1 | public class UserTypeAdapter extends TypeAdapter<User> { |
- 2.7.2 序列化和反序列化
1 |
2.8 JsonSerializer序列化接口
1 | /** |
2.9 JsonDeserializer反序列化接口
1 | /** |
3.0 将请求网络日志按照一定格式展示
1 | private static final String LINE_SEPARATOR = System.getProperty("line.separator"); |
- 如图,日志格式如下所示: