Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓Don';如果json中的值无效,则不解析该值_Java_Android_Json_Retrofit - Fatal编程技术网

Java 安卓Don';如果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

我正在使用改型和json转换器。我创建了包含一些字段的POJO。其中一个字段应该是int,但如果服务器发送其他内容而不是int,则不需要解析这些值。如果json中的值无效,是否可以不解析该值。

如果使用的是
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中的字段名称,这应该是可行的。可能需要一些轻微的修改,我没有测试它