您的位置:首页 > 其它

Gson库使用-排序字段(ExclusionStrategy)或者修改(FieldNamingStrategy)字段

2011-11-14 23:52 435 查看
Gson解析json数据很是强大,但有的时候如果使用不当,也很麻烦。

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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐