Google Gson 字段过滤:@Expose
2017-01-05 20:52
344 查看
本文内容大多基于官方文档和网上前辈经验总结,经过个人实践加以整理积累,仅供参考。
Google Gson 使用 @Expose 注解实现字段过滤,该注解必须和 com.google.gson.GsonBuilder 类配合使用,如果使用 com.google.gson.Gson 类则不会产生任何作用。
(1) @Expose(serialize = true, deserialize = true):序列化和反序列化时都生效,即序列化和反序列化都会处理
(2) @Expose(serialize = false, deserialize = false):序列化和反序列化时都不生效,即序列化和反序列化都忽略,和不加 @Expose 注解效果一样
(3) @Expose(serialize = true, deserialize = false):只有序列化时生效,即序列化时处理,反序列化时忽略
(4) @Expose(serialize = false, deserialize = true):只有反序列化时生效,即反序列化时处理,序列化时忽略
示例
(1) POJO 类
(2) 测试代码
运行测试结果:
Google Gson 使用 @Expose 注解实现字段过滤,该注解必须和 com.google.gson.GsonBuilder 类配合使用,如果使用 com.google.gson.Gson 类则不会产生任何作用。
(1) @Expose(serialize = true, deserialize = true):序列化和反序列化时都生效,即序列化和反序列化都会处理
(2) @Expose(serialize = false, deserialize = false):序列化和反序列化时都不生效,即序列化和反序列化都忽略,和不加 @Expose 注解效果一样
(3) @Expose(serialize = true, deserialize = false):只有序列化时生效,即序列化时处理,反序列化时忽略
(4) @Expose(serialize = false, deserialize = true):只有反序列化时生效,即反序列化时处理,序列化时忽略
示例
(1) POJO 类
public class User { @Expose(serialize = true, deserialize = true) private String account; @Expose(serialize = false, deserialize = false) private String password; @Expose(serialize = true, deserialize = false) private String name; @Expose(serialize = false, deserialize = true) private int age; public User() {} public User(String account, String password, String name, int age) { this.account = account; this.password = password; this.name = name; this.age = age; } public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [account=" + account + ", password=" + password + ", name=" + name + ", age=" + age + "]"; } }
(2) 测试代码
@Test public void test() throws IOException { Gson gson = new GsonBuilder() .excludeFieldsWithoutExposeAnnotation() .create(); User user = new User("admin", "123456", "John", 30); System.out.println(gson.toJson(user)); String userStr = "{\"account\":\"normal\",\"password\":\"xyz123\",\"name\":\"Normal\",\"age\":25}"; User normalUser = gson.fromJson(userStr, User.class); System.out.println(normalUser); }
运行测试结果:
相关文章推荐
- Google Gson 字段过滤:基于 Gson 版本
- Google Gson 字段过滤:基于访问修饰符
- 安卓注解使用,实体类指定须使用字段, Google Gson 字段过滤
- 一个表里过滤另一个表里的字段(c++)
- django ORM model filter 条件过滤,及多表连接查询、反向查询字段
- 已解决:mybatis 查询默认过滤值为空的字段
- 强大的DataGrid组件[13]_字段过滤(Filter)——Silverlight学习笔记[21]
- Spring MVC 更灵活的控制 json 返回(自定义过滤字段)
- Spring MVC 更灵活的控制 json 返回问题(自定义过滤字段)
- Linq强大的查询功能,以及DataSet中多表之间交叉查询,字段过滤,筛选等
- Spring MVC 更灵活的控制 json 返回问题(自定义过滤字段)
- MySql 正则过滤数据 合并表多行的指定字段
- 金蝶EAS,通用过滤中F7字段添加过滤
- SharePoint 2010开发实例精选——可过滤的查阅项字段
- django ORM model filter 条件过滤,及多表连接查询、反向查询,某字段的distinct
- openerp学习笔记 视图中字段只变化(on_change)联动其他字段值、选择和过滤
- mysql where过滤条件中and连接的两个条件的顺序不必和建立的联合索引的字段顺序一致
- Linq强大的查询功能,以及DataSet中多表之间交叉查询,字段过滤,筛选等
- NSArray数组 里面含有 NSMutableDictionary 字典 ,对NSMutableDictionary某个字段进行筛选过滤
- Spring MVC 更灵活的控制 json 返回(自定义过滤字段)