Я читаю ответ 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
в качестве поля типа runtime
вместо int
, но, возможно, есть лучший способ обработки таких ошибок.