Java JSON数据类型验证

时间:2013-07-29 12:19:04

标签: java json validation

我正在使用Google-gson将JSON文件解析为POJO。如果JSON文件格式不正确,GSON会抛出异常,这很好。但我也需要类型验证,因此如果出现错误,则会抛出错误:

  • JSON字段的类型与POJO属性的类型不匹配。
  • JSON中缺少属性。
  • JSON中有些属性在POJO中找不到。

所以如果我有这个课程:

class MyClass {
    private String aString;
    private int anInt;
    private boolean aBoolean;
    private String[] anArrayOfStrings;
}

以下JSON在任何情况下都不会验证:

{
    "aString": 1234, // int instead of String
    "anInt": "asd", // String instead of int
    // missing aBoolean field
    "anArrayOfStrings": [1, 2, 3, 4], // int array instead of String array
    "unexpectedValue": "asd" // A field not present in the POJO
}

有没有办法用GSON做到这一点?否则,是否有其他JSON解析和映射库能够以简单的方式执行此操作?我的意思是,不必使用包含架构验证的其他JSON,例如com.sdicons.jsontools

有关哪些属性和这些属性的类型在POJO本身中的信息,因此看起来GSON很容易验证至少类型,但它不会,它只是猜测值错误和缺失值。我需要抛出异常。

1 个答案:

答案 0 :(得分:0)

这是无效的JSON:

{
    aString: 1234, // int instead of String
    anInt: "asd", // String instead of int
    // missing aBoolean field
    anArrayOfStrings: [1, 2, 3, 4], // int array instead of String array
    unexpectedValue: "asd" // A field not present in the POJO
}

将其更改为:

{
    "aString": 1234,
    "anInt": "asd",
    "anArrayOfStrings": [1, 2, 3, 4],
    "unexpectedValue": "asd"
}