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}]
添加回答
舉報