相关疑难解决方法(0)

如何在反序列化JSON响应时使用Gson处理NumberFormatException

我正在使用Gson读取JSON响应,它返回somtimes a NumberFormatException因为预期int值设置为空字符串.现在我想知道处理这种异常的最佳方法是什么.如果值为空字符串,则反序列化应为0.

预期的JSON响应:

{
   "name" : "Test1",
   "runtime" : 90
}
Run Code Online (Sandbox Code Playgroud)

但有时运行时是一个空字符串:

{
   "name" : "Test2",
   "runtime" : ""
}
Run Code Online (Sandbox Code Playgroud)

java类看起来像这样:

public class Foo
{
    private String name;
    private int runtime;
}
Run Code Online (Sandbox Code Playgroud)

反序列化是这样的:

String input = "{\n" +
               "   \"name\" : \"Test\",\n" +
               "   \"runtime\" : \"\"\n" +
               "}";

Gson gson = new Gson();
Foo foo = gson.fromJson(input, Foo.class);
Run Code Online (Sandbox Code Playgroud)

抛出一个com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: empty String因为返回一个空String而不是一个int值.

有没有办法告诉Gson," 如果你反序列化runtimeType 的字段Foo并且有一个NumberFormatException,只返回默认值0 "?

我的解决方法是使用a …

java json gson deserialization

45
推荐指数
5
解决办法
4万
查看次数

标签 统计

deserialization ×1

gson ×1

java ×1

json ×1