繁体   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