使用null int的Gson反序列化似乎无法工作

Tsu*_*aze 1 java int null android

当我在网上下载数据时,有时它会起作用,有时它却不起作用.我的问题在于int:运行时:""

运行时是一个int,当我使用gson时,它可能会导致此问题:

01-07 21:22:57.602: E/AndroidRuntime(2726): Caused by: java.lang.NumberFormatException: Invalid int: ""
Run Code Online (Sandbox Code Playgroud)

我尝试了一些if语句,但它不起作用.

public int getRuntime() {
    if(Integer.valueOf(runtime)==null){
        return 0;
    }else{
        return runtime;
    }
}
Run Code Online (Sandbox Code Playgroud)

甚至

public int getRuntime() {
    if(Integer.valueOf(runtime).equals(null)){
        return 0;
    }else{
        return runtime;
    }
}
Run Code Online (Sandbox Code Playgroud)

但没有任何作用.

JB *_*zet 5

Integer.valueOf()需要一个表示整数的String.使用空字符串调用它将导致异常.在将其解析为整数之前,您需要测试String:

int runtime;
if ("".equals(string)) {
    runtime = 0;
}
else {
    runtime = Integer.parseInt(string);
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您始终希望运算符为0(如果字符串不是有效整数),则捕获异常:

try {
    runtime = Integer.parseInt(string);
}
catch (NumberFormatException e) {
    runtime = 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,它是为你解析字符串的gson,并且这个字符串并不总是一个整数,那么runtime字段不应该是int,而是字符串.你应该自己解析它,如上所示.

鉴于您的问题,在尝试使用gson和android做任何事情之前,您应该学习Java语言的基础知识.您似乎不了解Java中的类型系统以及有哪些例外.阅读http://docs.oracle.com/javase/tutorial/java/nutsandbolts/