你如何让GSON省略空或空对象并清空数组和列表?

我正在使用Gson,我处于一种必须缩小某些Json字符串大小的情况。 我想通过让它不将空对象,空值和空列表和数组放入Json字符串来实现。

有一种直截了当的方法吗?

让我澄清一点:我希望所有内容:emptyProp:{}或emptyArray:[]被跳过。 我希望任何只包含空属性的对象被跳过。

默认情况下,只要不将serializeNulls()设置为GsonBuilder,就会排除空值。

空列表的一种方法是创建一个JsonSerializer

class CollectionAdapter implements JsonSerializer> { @Override public JsonElement serialize(Collection src, Type typeOfSrc, JsonSerializationContext context) { if (src == null || src.isEmpty()) // exclusion is made here return null; JsonArray array = new JsonArray(); for (Object child : src) { JsonElement element = context.serialize(child); array.add(element); } return array; } } 

然后注册

 Gson gson = new GsonBuilder().registerTypeHierarchyAdapter(Collection.class, new CollectionAdapter()).create(); 

根据PomPom ,HashMap可以通过以下方式序列化:

 class MapAdapter implements JsonSerializer> { @Override public JsonElement serialize(Map src, Type typeOfSrc,JsonSerializationContext context) { if (src == null || src.isEmpty()) return null; JsonObject obj = new JsonObject(); for (Map.Entry entry : src.entrySet()) { obj.add(entry.getKey().toString(), context.serialize(entry.getValue())); } return obj; } }