Gson将字段反序列化为具有不同名称的变量,尽管具有字段名称

时间:2016-05-17 18:13:08

标签: java gson deserialization

我从包含密钥' id'的服务器(不是我的服务器)获取json。 我想将它反序列化为一个名为' jsonId'的变量。在我的对象里面。 我使用@SerializedName(" id")来做,但问题是我的对象也有变量id,因为我得到重复错误。

我如何映射' id'变量' jsonId',同时输入' id'变量?

感谢。

1 个答案:

答案 0 :(得分:2)

我可以想到两个选择。

一种选择是将名为id的字段标记为transientGson ignores any field modified with transient.

  

如果某个字段标记为瞬态,(默认情况下)它将被忽略,并且不会包含在JSON序列化或反序列化中。

另一个选项是使用jsonId注释@Expose字段(以及所有其他相关字段)并构建您的Gson实例以排除没有注释的字段。例如,

Gson mapper = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();

Gson现在只会对那些使用@Expose注释的字段进行反序列化。它不会考虑任何其他人。