Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaGSON—是否可以从字符串中反序列化对象,而不需要其所有字段_Java_Gson_Xml Deserialization - Fatal编程技术网

JavaGSON—是否可以从字符串中反序列化对象,而不需要其所有字段

JavaGSON—是否可以从字符串中反序列化对象,而不需要其所有字段,java,gson,xml-deserialization,Java,Gson,Xml Deserialization,假设我向对象添加了一个字段,但仍然得到相同的字符串。我可以将它反Json到一个缺少字段设置为null的对象中吗? 如果我有原始变量呢? 10倍取决于反序列化是如何完成的。如果首先使用无参数构造函数创建对象,然后通过setter或反射设置字段,我认为这应该可以工作。在这种情况下,对其他对象的每个引用都将为null,而基元类型将获得数字0、布尔值false等的默认值。您可以使用XStream反序列化为JSON,这就是它们处理新字段的方式: 所以简单的回答是:引用将是空引用,原语将保留它们在构造函数中

假设我向对象添加了一个字段,但仍然得到相同的字符串。我可以将它反Json到一个缺少字段设置为null的对象中吗? 如果我有原始变量呢?
10倍取决于反序列化是如何完成的。如果首先使用无参数构造函数创建对象,然后通过setter或反射设置字段,我认为这应该可以工作。在这种情况下,对其他对象的每个引用都将为null,而基元类型将获得数字0、布尔值false等的默认值。

您可以使用XStream反序列化为JSON,这就是它们处理新字段的方式:

所以简单的回答是:引用将是空引用,原语将保留它们在构造函数中得到的值


反序列化时,JSON中缺少的条目会导致将对象中的相应字段设置为null

我可以使用GSON吗?我的项目使用GSON,我希望继续使用这个jar,除非我必须转换为alternative。如果从类中删除一个字段,反序列化包含该字段的旧版本将导致异常。这意味着我必须升级我所有的客户。我想找到一个解决办法来避免它。在这种情况下,您可以使用完全为您的案例设计的@Since注释:这仍然是一个问题。在旧客户机中,我将获得一个新领域的gson字符串。他们抛出了一个IllegalArgumentException你能发布IllegalArgumentException的堆栈跟踪吗?它可能是一个永远不应该为空的字段。我的错误。仔细检查,它确实按照您描述的方式工作。在使用GSON之前,我忘了对较新的类nae进行字符串替换。是的,这就是问题所在,我使用的是基元类型,它给了我默认值。请提供一些示例或更多说明。这是一个相当模糊的问题。