最佳方案处理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的序列化模块。