Gson 过滤字段的几种方法
2016-05-18 14:14
435 查看
gson 大家基本上都用过吧,没用过的话,建议你赶紧使用,因为使用起来太方便了,只需要一句话就能把一个类打包成 json 数据,同样也只需要一句代码就能把 json 数据转化成一个对象。当然今天讲的不是如何转化对象和解析 json 数据,而是我们在打包或解析数据的时候,往往有些字段我们不需要,所以这就需要过滤;这里总结了一下集中方法,
new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create() ; 来创建
[java] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
mGson = new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
//过滤掉字段名包含"id","address"的字段
return f.getName().contains("id")|f.getName().contains("address");
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
//过滤掉 类名包含 Bean的类
return clazz.getName().contains("Bean");
}
}).create();
以上方法是 Gson 中使用到的,掌握了这几个基本上 Gson 的打包和解析 过滤字段问题就不是什么问题了;
方法一:
在对象中把字段用@Expose 注解,这样其他没有用此注解的字段通通都会过滤掉,当然还有一步关键的要实现,就是我们在实例化 Gson 的时候不能简单的new Gson() 了,而是需要用到new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create() ; 来创建
方法二:
直接用 构造方法[java] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
mGson = new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
//过滤掉字段名包含"id","address"的字段
return f.getName().contains("id")|f.getName().contains("address");
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
//过滤掉 类名包含 Bean的类
return clazz.getName().contains("Bean");
}
}).create();
方法三:
通过指定声明的权限来过滤,这里过滤掉声明为 protcted 的变量;mGson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.PROTECTED).create() ;
以上方法是 Gson 中使用到的,掌握了这几个基本上 Gson 的打包和解析 过滤字段问题就不是什么问题了;
相关文章推荐
- Windows环境下Android Studio-------简单设置
- Django错误处理:DoesNotExist: User matching query does not exist.
- Android frameworks去掉熄屏前先变暗的功能
- 让你实现财富自由,从此不再缺资金
- HTML img.src图片不存在,则显示另一张图片
- Microsoft Virtual WiFi Miniport Adapter 使用方法
- Hive基础(1)概念、安装、使用笔记
- zabbix监控mysql主从状态
- 排序算法——堆排序
- java 多线程 总结 案例
- DevOps,你真的了解吗?
- MFC 模态对话框dlg.DoModal()返回值
- 168 git merge冲突解决
- 在互联网+时代,人人快递教你示爱的正确打开方式
- ajax
- ajaxSubmit异步提交
- 最短摘要生成
- 快速入门系列--WCF--08扩展与新特性
- CSS3实现半像素边框
- Hadoop和Spark的异同