Como lidar com NumberFormatException com Gson na desserialização de uma resposta JSON
Estou lendo uma resposta JSON com Gson, que retorna às vezes aNumberFormatException
porque um esperadoint
value é definido como uma sequência vazia. Agora estou me perguntando qual é a melhor maneira de lidar com esse tipo de exceção. Se o valor for uma sequência vazia, a desserialização deve ser 0.
Resposta JSON esperada:
{
"name" : "Test1",
"runtime" : 90
}
Mas, às vezes, o tempo de execução é uma string vazia:
{
"name" : "Test2",
"runtime" : ""
}
A classe java fica assim:
public class Foo
{
private String name;
private int runtime;
}
E a desserialização é esta:
String input = "{\n" +
" \"name\" : \"Test\",\n" +
" \"runtime\" : \"\"\n" +
"}";
Gson gson = new Gson();
Foo foo = gson.fromJson(input, Foo.class);
Que lança umcom.google.gson.JsonSyntaxException: java.lang.NumberFormatException: empty String
porque uma String vazia é retornada em vez de um valor in
Existe uma maneira de dizer ao Gson ",se você desserializar o camporuntime
do tipoFoo
e existe um NumberFormatException, basta retornar o valor padrão 0 "?
Minha solução alternativa é usar umString
como o tipo deruntime
campo em vez deint
, mas talvez haja uma maneira melhor de lidar com esses erro