2013-07-29 50 views
0

我正在使用Google-gson將JSON文件解析爲POJO。如果JSON文件格式不正確,GSON會拋出異常,這很好。但是我也需要類型驗證,所以如果出現以下錯誤:Java JSON數據類型驗證

  • 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很容易驗證至少這些類型,但它不會,它只是猜測不正確值和缺失值的值。我需要拋出一個異常。

回答

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" 
} 
+0

哦,是的感謝您指出的錯字 – dablak

+1

Tichodroma,你可能會爲什麼它不是有效的提至OP。也就是說,JSON中的評論是不允許的。 – James