1 回答
TA贡献1810条经验 获得超4个赞
您可以像这样编写自定义 JSON 序列化器适配器:
public class CustomJsonArraySerializer<T> implements JsonSerializer<T[]> {
@Override
public JsonElement serialize(T[] source, Type type, JsonSerializationContext context) {
JsonArray jsonArray = new JsonArray();
for(T item : source){
if(item != null) { // skip null values
jsonArray.add(context.serialize(item));
}
}
return jsonArray;
}
}
您可以像这样注册这个自定义序列化器采用者:
private static final Gson GSON = new GsonBuilder().registerTypeAdapter(Item[].class, new CustomJsonArraySerializer<>()).create();
现在,当您序列化它时,Item[]它将忽略这些null值。
测试:
Item[] items = {new Item(10, 20), null, null, null, new Item(50, 60)};
JsonElement jsonElement = GSON.toJsonTree(items);
System.out.println(jsonElement);
输出:
[{"id":10,"amount":20},{"id":50,"amount":60}]
添加回答
举报