簡體   English   中英

GSON:反序列化時無法檢測到損壞的字段名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM