发表于: 2017-10-05 22:07:58
0 705
今天完成的事情:
基本概念
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
评论