Gson转换无限循环处理

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方法不对,不然就是传的属性有问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值