Java 当使用GSON进行反序列化时,我如何确定哪些字段没有在原始JSON中发送?

Java 当使用GSON进行反序列化时,我如何确定哪些字段没有在原始JSON中发送?,java,json,gson,Java,Json,Gson,我有一个数据结构类和传入的JSON数据。我使用fromJson(jsonData,MyClass)方法将数据反序列化到类中。传入的JSON数据各不相同,有时不发送某些值 我希望能够确定哪些值不是从发送的值发送的,而是专门设置为null。初始化我的数据结构类中的字段似乎没有什么帮助,因为即使它们不是在原始JSON数据中发送的,它们在fromJson()方法中也被设置为null。我似乎也无法用反序列化排除策略来实现这一点 任何帮助都将不胜感激。您到底想确定什么?您想知道传入JSON数据中缺少哪些字段

我有一个数据结构类和传入的
JSON
数据。我使用
fromJson(jsonData,MyClass)
方法将数据反序列化到类中。传入的
JSON
数据各不相同,有时不发送某些值

我希望能够确定哪些值不是从发送的值发送的,而是专门设置为
null
。初始化我的数据结构类中的字段似乎没有什么帮助,因为即使它们不是在原始
JSON
数据中发送的,它们在
fromJson()
方法中也被设置为null。我似乎也无法用反序列化排除策略来实现这一点


任何帮助都将不胜感激。

您到底想确定什么?您想知道传入JSON数据中缺少哪些字段吗?如果它们在结果对象实例中为null,则可以假定它们缺失或具有null值。这还不够吗?不,这还不够。某些值随null一起发送,null是用于在其他位置设置信息的有效值。如果一个值没有在JSON中发送(它仍然存在于数据结构中并且被设置为null),我不想使用该值来设置任何信息。基本上,如果一个值为null,我将数据库字段设置为null;但是,如果一个值没有通过,我不想用null覆盖该数据库字段。在我最初的尝试中,我尝试将数据结构中的字段设置为某个值(例如String x=“”;)(即非null值),但在使用fromJson()方法时,该值似乎被覆盖为null。我希望找到一种方法说服GSON不要理会这些价值观,或者沿着这些思路做其他事情。我不想解析JSON,确定发送了哪些字段,确定哪些字段在数据结构中,然后在事后将这些字段设置为非空值,以便我以后可以确定它们没有在接口中发送。进一步研究,这似乎是由于字段包含在另一个结构中:[{“A”:{“B”:“value”,“C”:“value”}]我的数据结构中有一个与“B”和“C”级别相同的值“D”。我使用与“a”相同级别的值进行测试,它保持了原始值。我将更仔细地观察数据结构本身,看看是否可以调整它以获得我想要的结果。显然,我在8个小时内无法回答我自己的问题,但这里有一个解决方案:将数据结构中的内部类更改为静态解决了我的问题。如果字段未在JSON中发送,则字段将保持其原始值。