基本类型
1 | // Serialization |
类
1 | class BagOfPrimitives { |
注意事项
- 类的属性推荐使用
private
- 默认情况下被
transient
修饰的属性会被忽略 - 序列化时为值
null
的属性将会被忽略 - 反序列化时,值
null
的属性将会被赋值为零值
数组
1 | Gson gson = new Gson(); |
集合
1 | Gson gson = new Gson(); |
泛型
1 | class Foo<T> { |
使用TypeToken
可指定泛型
内置解析器
java.net.URL
可以匹配如下格式的值"https://github.com/google/gson/"
java.net.URI
可以匹配如下格式的值"/google/gson/"
1 | Gson gson = new Gson(); |
自定义序列化与反序列化
需要序列化的类UserBean
1 |
|
序列化处理器,泛型为UserBean
1 | public class UserJsonSerializer implements JsonSerializer<UserBean>{ |
反序列化处理器,泛型为UserBean
1 | public class UserJsonDeserializer implements JsonDeserializer<UserBean>{ |
测试程序,注册UserBean
的TypeToken
的序列化与反序列化处理器
1 | GsonBuilder gsonBuilder = new GsonBuilder(); |
使用 JsonSerializer 统一处理 null
1 | package com.leaderli.demo.util; |
{"str":"","temp":{"temp":""},"set":[],"list":["1",""]}
优化打印
1 | Gson gson = new GsonBuilder().setPrettyPrinting().create(); |
打印结果如下
1 | { |