发表于: 2017-10-05 22:07:58

0 706


今天完成的事情:

基本概念

Serialization:序列化,使Java对象到Json字符串的过程。

Deserialization:反序列化,字符串转换成Java对象。

JSON数据中的JsonElement有下面这四种类型:

JsonPrimitive —— 例如一个字符串或整型

JsonObject—— 一个以 JsonElement 名字(类型为 String)作为索引的集合。也就是说可以把 JsonObject 看作值为 JsonElement 的键值对集合。

JsonArray—— JsonElement 的集合。注意数组的元素可以是四种类型中的任意一种,或者混合类型都支持。

JsonNull—— 值为null


Gson解决的问题

提供一种像toString()和构造方法的很简单的机制,来实现Java 对象和Json之间的互相转换。

允许已经存在的无法改变的对象,转换成Json,或者Json转换成已存在的对象。

允许自定义对象的表现形式

支持任意的复杂对象

能够生成可压缩和可读的Json的字符串输出。


Gson处理对象的几个重要点

1 推荐把成员变量都声明称private的

2 没有必要用注解(@Expose 注解)指明某个字段是否会被序列化或者反序列化,所有包含在当前类(包括父类)中的字段都应该默认被序列化或者反序列化

3 如果某个字段被 transient 这个Java关键词修饰,就不会被序列化或者反序列化

4 下面的实现方式能够正确的处理null

1)当序列化的时候,如果对象的某个字段为null,是不会输出到Json字符串中的。

2)当反序列化的时候,某个字段在Json字符串中找不到对应的值,就会被赋值为null

5 如果一个字段是 synthetic

的,他会被忽视,也即是不应该被序列化或者反序列化

6 内部类(或者anonymous class(匿名类),或者local class(局部类,可以理解为在方法内部声明的类))的某个字段和外部类的某个字段一样的话,就会被忽视,不会被序列化或者反序列化


Gson的基本用法:

JavaBean转换Json字符串

gson提供 publicString toJson(Object src) 方法可以将对象转换成jsonStr

package com.wyc.gson;

import com.google.gson.Gson;

public class GsonTest1 {
public static class Student {
  private String name;
  private int age;

  //省略setter getter equals
  }

  private static void log(String msg) {
     System.out.println(msg);
  }


public static void main(String[] args) throws Exception {
     Gson gson = new Gson();
     Student student = new Student();
     student.setName("wangyuchen");
     student.setAge(22);
     String jsonStr = gson.toJson(student);
     log("---->javabean convert jsonStr:" + jsonStr);
  }

}

运行结果:

---->javabean convert jsonStr:{"name":"wangyuchen","age":22}


List Map转Json字符串

package com.wyc.gson;

import com.google.gson.Gson;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class GsonTest1 {

private static void log(String msg) {
     System.out.println(msg);
  }

public static void main(String[] args) throws Exception {
     Gson gson = new Gson();

     List<String> list = Arrays.asList("1", "a", "3", "rt", "5");
     log("---->list convert jsonStr:" + gson.toJson(list));

     Map<String, Object> content = new HashMap<String, Object>();
     content.put("name", "wangyuchen");
     content.put("age", "22");
     log("---->map convert jsonStr:" + gson.toJson(content));
  }

}

运行结果:

---->list convert jsonStr:["1","a","3","rt","5"]

---->map convert jsonStr:{"name":"wangyuchen","age":"22"}

明天计划的事情:找老大评审

遇到的问题:放假,老大不在

收获:学习Gson


返回列表 返回列表
评论

    分享到