您的位置:

最佳方案处理glide IllegalArgumentException("Failed to parse @Excludes for: " + clazz)

  发布时间:2023-01-25 17:30:02
报错的原因这个错误通常是由于在使用Glide时,在定义的模型类上没有正确地使用@Exclude注解导致的。应该在模型类的不需要序列化的字段上添加@Exclude注解,以避免这个错误的出现。最后,如果使用这些第三方库,还需要把它们加入到项目中,并在使用Glide的地方替换掉 Glide的序列化模块。

报错的原因

这个错误通常是由于在使用Glide时,在定义的模型类上没有正确地使用@Exclude注解导致的。应该在模型类的不需要序列化的字段上添加@Exclude注解,以避免这个错误的出现。

如何解决

可以在不需要序列化的字段上添加 @Exclude 注解,例如:


class MyModel {
    @Exclude 
    private String notSerializedField;
    ...
}

此外也可以使用第三方库来解决,例如 Gson 或 Jackson ,在定义模型类时使用@JsonIgnoreProperties(ignoreUnknown = true)或者@JsonIgnore来忽略不需要序列化的字段。


class MyModel {
    @JsonIgnore
    private String notSerializedField;
    ...
}

如果使用这些第三方库,还需要把它们加入到项目中,并在使用Glide的地方替换掉 Glide的序列化模块。

使用例子

使用Gson的例子:

1.在项目build.gradle中添加依赖:


implementation 'com.google.code.gson:gson:2.8.6'

2.在定义模型类中添加@Exclude注解:


class MyModel {
    @Exclude 
    private String notSerializedField;
    ...
}

3.在使用Glide加载图片时,替换掉Glide默认的序列化模块为Gson:


Glide.with(context)
    .load(imageUrl)
    .diskCacheStrategy(DiskCacheStrategy.ALL)
    .centerCrop()
    .skipMemoryCache(true)
    .signature(new ObjectKey(System.currentTimeMillis()))
    .into(imageView);

4.使用Gson来序列化模型类,例如在获取网络数据时:


Gson gson = new Gson();
MyModel myModel = gson.fromJson(response, MyModel.class);

使用Jackson的例子与此类似,只需要在项目中添加Jackson相关的依赖和更换对应的注解即可。

需要注意的是,如果你使用的是Jackson的话,还需要在模型类上加上@JsonIgnoreProperties(ignoreUnknown = true)或者@JsonIgnore来忽略不需要序列化的字段。

最后,如果使用这些第三方库,还需要把它们加入到项目中,并在使用Glide的地方替换掉 Glide的序列化模块。