【发布时间】:2020-03-03 18:09:50
【问题描述】:
我实际上有多个关于 Gson 的问题。
第一个是当提供的 JSON 不包含任何匹配的字段时,Gson 是否会将字段的值设置为 null。
例如,当提供的 JSON 具有字段 name 但我将其反序列化为包含 name 和 avatar 的类时,avatar 会为空吗?
下一个问题与上述问题有关。当我使用已经预定义的值设置字段时,Gson 会覆盖它,即使它未在 JSON 中提供(将其覆盖为 null)还是会简单地忽略该字段并继续前进?
最后我想知道当我使用@SerializedName("username") 但JSON 包含name 时,Gson 是否仍会将值设置为name。
我想更新我的 API,包括一些错误的 JSON 字段命名,但我想让使用它的人尽可能顺利地转换它,所以我想仍然(临时)提供旧的字段名称,同时也为新的提供支持。可以使用@SerializedName 注释吗?
我还是 Gson 的初学者,Gson User Guide 对我回答这两个具体问题没有太大帮助(或者我忽略了它,这也是可能的)。
【问题讨论】:
-
解决此类问题的最佳方法是尝试
-
你可以试试看Gson don't use default field value for objects (not primitives)。如果您想从多个字段反序列化到给定属性,可以使用
alternateproperty change field name to lowercase while deserializing POJO to JSON using GSON?