使用 Google 的 Gson 进行严格的 JSON 解析?
假设我正在使用 Google 的 Gson 库将 JSON 解析为 Java 数据结构。
如果 Java 字段没有对应的 JSON,是否有简单的方法抛出异常?也就是说,我希望要求 JSON 具有 Java 结构中的所有字段。
Suppose I am using Google's Gson library to parse JSON into Java data structures.
Is there an easy way to throw an exception if there is a Java field that has no corresponding JSON? That is, I wish to require the JSON to have all the fields in the Java structure.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Gson 没有 JSON 模式验证功能来指定必须存在特定元素,并且没有办法指定必须填充 Java 成员。拥有这样的功能可能会很好,例如使用
@Required
注释。前往Gson 问题列表并提出增强请求。使用 Gson,您可以强制指定的 JSON 元素与自定义反序列化器一起出现。
更好的方法可能是使用提供 JSON 架构 验证的 API。 Jackson 至少有一个基本的实现。 JSON Tools 看起来有一个更成熟的工具。
这是杰克逊的一个例子。
Gson doesn't have a JSON schema validation feature to specify that a particular element must be present, and it doesn't have a way to specify that a Java member must be populated. It might be nice to have such a feature available, such as with an
@Required
annotation. Head on over to the Gson Issues List and put in an enhancement request.With Gson, you could enforce that specified JSON elements are present with a custom deserializer.
A preferable approach might be to use an API that provides JSON Schema validation. Jackson has at least a rudimentary implementation available. JSON Tools looks to have a more mature one.
Here's an example with Jackson.
您可以递归地验证 json 是否包含类中未声明的字段:
You can recursively verify whether the json contains fields that are not declared in the class :