Null values are excluded by default as long as you don't set serializeNulls() to your GsonBuilder.
A way for empty lists is to create a JsonSerializer
class CollectionAdapter implements JsonSerializer<List<?>> {
@Override
public JsonElement serialize(List<?> 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;
}
}
Then register it
Gson gson = new GsonBuilder().registerTypeHierarchyAdapter(Collection.class, new CollectionAdapter()).create();
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…