Я читаю ответ JSON с Gson, который возвращает somtimes a NumberFormatException, потому что установлено ожидаемое значение int к пустой строке. Теперь мне интересно, какой лучший способ справиться с этим видом исключения. Если значение представляет собой пустую строку, десериализация должна быть 0.
Ожидаемый ответ JSON:
{
"name" : "Test1",
"runtime" : 90
}
Но иногда среда выполнения представляет собой пустую строку:
{
"name" : "Test2",
"runtime" : ""
}
Класс java выглядит следующим образом:
public class Foo
{
private String name;
private int runtime;
}
И десериализация такова:
String input = "{\n" +
" \"name\" : \"Test\",\n" +
" \"runtime\" : \"\"\n" +
"}";
Gson gson = new Gson();
Foo foo = gson.fromJson(input, Foo.class);
Что выбрал com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: empty String, потому что вместо значения int возвращается пустой String.
Есть ли способ рассказать Gson: "Если вы десериализуете поле runtime для типа Foo и существует исключение NumberFormatException, просто верните значение по умолчанию 0"?
Моим обходным решением является использование String в качестве типа поля runtime вместо int, но, возможно, есть лучший способ справиться с такими ошибками.