[英]GSON: Cannot detect corrupted field names at deserialization
我想反序列化一個字段並確保沒有發生錯誤,每個字段都被讀取了。 如果 json 文件有問題,我想知道。
private static class A {
int x;
}
public static void main(String[] args) {
Gson gson = new Gson();
A a;
try {
Reader reader = new StringReader("{\"y\":10}");
a = gson.getAdapter(A.class).fromJson(reader);
} catch (IOException | JsonSyntaxException e) {
System.out.println(e.getMessage());
return;
}
}
在此示例中,我將 json 字符串中的字段名稱從x
更改為y
。 我希望得到一個例外。 它不會發生,但ax
被初始化為零。
如何檢查是否已讀取每個字段?
不幸的是,Gson 目前不提供開箱即用的功能,請參閱相應的功能請求。 而且它也不會檢測未知字段。
也許問題Gson 可選和必填字段的答案會有所幫助。 您也可以嘗試自己編寫一個通用的TypeAdapterFactory
來獲取 class 的字段並檢查它們的值是否存在於 JSON 數據中,但是這樣的代碼可能難以維護並且不能與其他 Gson 功能很好地集成,例如自定義字段命名或排除策略。
目前最好檢查是否有任何第三方擴展庫 Gson 提供此功能,或者其他 JSON 庫是否對此有更好的支持。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.