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