您的位置:首页 > 其它

Gson转换无限循环处理

2015-09-21 14:55 204 查看
1.transient

对于有可能发生无限循环的变量前,加上以上标示即可。

2.还有方案2,例如有时候用,有时候不用,部分用啊的情况

//创建一个带过滤条件的gson对象
Gson gson = new GsonBuilder()  
    .setExclusionStrategies(new ExclusionStrategy() {  
      
    /** 
     * 设置要过滤的属性 
     */  
    @Override  
    public boolean shouldSkipField(FieldAttributes attr) {  
        //我们只过滤User类的id属性,而Type类的id属性还是要输出的  
        boolean b = false;  
        //如果当前属性所在的类是User的话,就使用regUser过滤  
        //否则就用regOther来过滤  
        if(attr.getDeclaringClass() == User.class) {  
            b = regUser.contains("|" + attr.getName() + "|");  
        } else {  
            b = regOther.contains("|" + attr.getName() + "|");  
        }  
        //这里,如果返回true就表示此属性要过滤,否则就输出  
        return !b;  
    }  
      
    /** 
     * 设置要过滤的类 
     */  
    @Override  
    public boolean shouldSkipClass(Class<?> clazz) {  
        //这里,如果返回true就表示此类要过滤,否则就输出  
        return false;  
    }  
}).create(); 


3.Expected BEGIN_OBJECT but was STRING异常

一般是类的get,set方法不对,不然就是传的属性有问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: