在GSON反序列化期间识别无效字段值

时间:2017-08-05 08:56:50

标签: java json gson deserialization

我的应用程序中有一个Order对象,它采用JSON格式,如下所示。

{
    "id" : "1001",
    "amount" : 100.50
    "customer" : {
         "id" : "2001"
         "name" : "Ned Stark"
    }
}

这表示为以下POJO。

public class Order 
{
    private long id;
    private double amount;
    private Customer customer;
}

我使用GSON来序列化和反序列化这个POJO。一切正常,直到JSON中给出的输入值有效。

但是当我在JSON中给出一个无效的数据类型值时,GSON不会抛出特定于容易出错的字段的异常,而只会抛出一个通用异常,这会让应用程序不知道哪个字段值无效。

例如,如果我在JSON中给出“asdf”(而不是有效数字)的数量,在反序列化期间Gson只会抛出一个通用的NumberFormatException,但似乎没有提供异常发生的任何信息实际上当字段“amount”正在尝试使用输入值设置时。

当必须将apt错误传达给客户端时,这对应用程序通常很有用。我认为应该在GSON中实现这一目标。

是否有任何格式可以找到导致反序列化失败的特定字段?

1 个答案:

答案 0 :(得分:0)

您可以在序列化之前编写验证程序,而不是依赖第三方库。

通过这种方式,您可以完全控制在出现错误时要传达的消息。