如何检测是否正在解析所有JSON字段?

时间:2013-07-17 17:35:15

标签: java json gson

我正在使用GSON注释将JSON字段从一个宁静的服务解析为DTO。我想编写一个测试,它将检测JSONObject中是否存在尚未解析为具有注释的Java DTO对象的任何字段。如果在服务器上他们添加了10个字段,我将无法知道这一点?如果所有字段都被解析为Java对象,有没有办法动态测试?

换句话说,我可以获取所有DTO字段的名称(包括注释信息),并比较JSON对象上的所有字段。所以我试图将DTO与JSONObject进行比较,看看我是否覆盖了所有内容。

1 个答案:

答案 0 :(得分:1)

Gson本身没有这样的东西。 Java或JSON中的“Extra”字段将被忽略。 Java中但不存在于JSON中的字段设置为null

唯一的方法就是通过反射,或者在Gson使用自定义反序列化器进行反序列化时,或者使用Gson的JsonObject类将JSON解析为JsonParser并进行测试。

您需要从JsonObject通过entrySet()获取所有字段名称,使用Class.getDeclaredFields()从Java类中获取所有字段名称,并比较这两个字段以查找哪些字段名称两者都不存在。

相关问题