Gson库使用-排序字段(ExclusionStrategy)或者修改(FieldNamingStrategy)字段
2011-11-14 23:52
435 查看
Gson解析json数据很是强大,但有的时候如果使用不当,也很麻烦。
第一种方法是使用Gson自带的注解,但任何时候取数据都没的那个字段。
第二种方法使用GsonBuilder,设置ExclusionStrategy参数。
1 “循环序列化” 异常
解决方法为在可能造成的循环序列化的字段加上 transient。transient private Menu parent;//父节点
2 排序特定字段
比如 :User的json数据为{id:”1” , name:”syxchina”, password:”syx”},我们解析的时候是不想把password解析,我们想得到格式为:{id:”1” , name:”syxchina”}。第一种方法是使用Gson自带的注解,但任何时候取数据都没的那个字段。
第二种方法使用GsonBuilder,设置ExclusionStrategy参数。
//原串:{id:"1" , name:"syx", password:"syx"} //效果:{id:"1" , name:"syx"} private static Gson gsonMenuComboTree = new GsonBuilder()// .setExclusionStrategies(new MenuTreeExclusionStrategy())// .create(); private static class MenuTreeExclusionStrategy implements ExclusionStrategy{ public boolean shouldSkipField(FieldAttributes f) { if("password".equals(f.getName())) return true; return false; } public boolean shouldSkipClass(Class<?> clazz) { return false; } }
3 修改字段json显示
//JSON: {id:"1" , name:"syx", password:"syx"}
//OUT : {id:"1" , name:"syx", modifyField:"syx"} private static Gson gsonMenuComboTree = new GsonBuilder()// .setFieldNamingStrategy(new MenuTreeFieldNamingStrategy())// .create();
private static class MenuTreeFieldNamingStrategy implements FieldNamingStrategy { public String translateName(Field f) { if ("password".equals(f.getName())) { return "modifyField"; } return f.getName(); } }
相关文章推荐
- gridview 实现排序 (在不是使用sqlDataSource控件,而在后台编码绑定gridview时,指定那个字段排序时使用。本例用了单层结构,可修改后应用于多层)
- linux 中使用ls命令对文件进行排序-- 基于文件大小或者修改时间
- Mysql中使用sql语句修改表中某一个字段的长度或者修改字段的类型
- Lucene使用SortField对多个字段进行排序
- django:DateTimeField如何自动设置为当前时间并且能被修改 ——django日期时间字段的使用
- mysql 在修改添加字段(alter table 表名 add column 或者 modify column)且带unique时提示duplicate entry for key的原因以及解决方案
- Oracle 排序 使用 nulls first 或者 nulls last
- [乐意黎原创] Mysql使用UTF8编码时让某字段使用中文排序(UTF8按字段拼音首字母排序)
- 使用awk对文档中特定字段的排序
- mysql 使用order by field() 自定义排序
- 数组排序(指定字段排序)---------合并数组.保留键---使用+号
- 使用shell实现对xml文件的指定字段进行修改,默认替换成当时的时间戳
- mongo里面根据对象字段的ID查询 db.Photo.find({'owner.$id':ObjectId('xxxx')}) , 并且使用forEach循环修改查询的数据
- DLINQ 使用DataContext快速构建数据访问层DAL,发现Updata采用Attach(Entity t,true)困难重重!(如果实体声明了版本成员或者没有更新检查策略,则只能将它附加为没有原始状态的已修改实体)的解决办法!
- 转自:http://m.blog.csdn.net/article/details?id=6554168 在使用order by语句进行查询结果排序时,不同的数据库对于被排序字段数据行为null的情况
- 润乾报表中使用动态宏实现数据集中字段分别排序
- java修改文件名-renameTo()方法的使用实例,复制一个文件或者叫转存一个文件
- 使用lucene4.6进行排序时报错:java.lang.IllegalArgumentException: after must be a FieldDoc; got doc=411 score=1
- 使用SQL批量替换语句修改、增加、删除字段内容
- iOS使用runtime修改文本框(TextField)的占位文字颜色