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