Java 安卓Don';如果json中的值无效,则不解析该值
我正在使用改型和json转换器。我创建了包含一些字段的POJO。其中一个字段应该是int,但如果服务器发送其他内容而不是int,则不需要解析这些值。如果json中的值无效,是否可以不解析该值。如果使用的是Java 安卓Don';如果json中的值无效,则不解析该值,java,android,json,retrofit,Java,Android,Json,Retrofit,我正在使用改型和json转换器。我创建了包含一些字段的POJO。其中一个字段应该是int,但如果服务器发送其他内容而不是int,则不需要解析这些值。如果json中的值无效,是否可以不解析该值。如果使用的是GSON,则可以使用GSON生成器上的setExclutionStrategies执行此操作。 像这样: Gson gson = new GsonBuilder() .setExclusionStrategies(new MyExclusionStrategy()) .creat
GSON
,则可以使用GSON
生成器上的setExclutionStrategies
执行此操作。
像这样:
Gson gson = new GsonBuilder()
.setExclusionStrategies(new MyExclusionStrategy())
.create();
现在,您只需要创建您的战略:
public class MyExclusionStrategy implements ExclusionStrategy {
public boolean shouldSkipClass(Class<?> arg0) {
return false;
}
public boolean shouldSkipField(FieldAttributes f) {
return (f.getDeclaringClass() == YourPOJO.class && f.getName().equals("field_name") &&
f.getDeclaredType() != Integer.class)
}
}
公共类MyExclusionStrategy实现了排除策略{
公共布尔值shouldSkipClass(类arg0){
返回false;
}
公共布尔值shouldSkipField(字段属性f){
return(f.getDeclaringClass()==YourPOJO.class&&f.getName().equals(“字段名”)&&
f、 getDeclaredType()!=Integer.class)
}
}
您所需要做的就是将YourPOJO
替换为类的名称,将field\u name
替换为POJO中的字段名称,这应该是可行的。可能需要一些轻微的修改,我没有测试它