1 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以像這樣編寫(xiě)自定義 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;
}
}
您可以像這樣注冊(cè)這個(gè)自定義序列化器采用者:
private static final Gson GSON = new GsonBuilder().registerTypeAdapter(Item[].class, new CustomJsonArraySerializer<>()).create();
現(xiàn)在,當(dāng)您序列化它時(shí),Item[]它將忽略這些null值。
測(cè)試:
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}]
添加回答
舉報(bào)