Я читаю JSON-ответ с помощью Gson, который иногда возвращает 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 возвращается пустая строка.
Есть ли способ сказать Gson: "если вы десериализуете поле runtime
типа Foo
и возникает NumberFormatException, просто верните значение по умолчанию 0"?
Моим обходным решением является использование String
в качестве Type поля runtime
вместо int
, но, возможно, есть лучший способ обработки таких ошибок.