我有一个类似于以下内容的 POJO:
public class MyGsonPojo {
@Expose
@SerializedName("value1")
private String valueOne;
@Expose
@SerializedName("value2")
private boolean valueTwo;
@Expose
@SerializedName("value3")
private int valueThree;
// Getters and other stuff here
}
问题是这个对象必须序列化成json body才能调用 到服务器。某些字段对于请求是可选的,如果我什至使用默认值和空值发送它,API 的响应会有所不同(不幸的是,更改 api 不是一个选项)。
所以基本上我需要将其中任何一个设置为默认值的字段从序列化中排除。例如,如果字段 valueOne
为 null
,则生成的 json 应为:
{
"value2" : true,
"value3" : 2
}
知道如何轻松完成这项工作吗?我不想手动构建 json 主体。
任何帮助都会很棒。谢谢你的建议。
最佳答案
要遵循的步骤:
- 将 JSON 字符串转换为
Map<String,Object>
使用 Gson#fromJson() - 迭代 map 并从 map 中删除
null
的条目 - 使用 Gson#toJson() 从最终 map 返回 JSON 字符串.
我已经在此处发布了相同上下文中的示例代码:
关于java - Gson序列化取决于字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24090651/