亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

GSON 輸出空數組值

GSON 輸出空數組值

繁星淼淼 2023-09-06 16:40:52
這是我的 GSON 實例,因為您看不到 serializeNulls()。private static final Gson GSON = new GsonBuilder().create();這就是我生成 json 的方式:object.add("inventory", GSON.toJsonTree(inventory.getItems()));物品:private int id;private int amount;public Item(int id, int amount) {    this.id = id;    this.amount = amount;}輸出:"inventory": [{  "id": 13  "amount": 1,},null,null,null,null,null,null,null,null,null,null,null],我也嘗試創建一個適配器,但沒有成功:@Overridepublic JsonElement serialize(Item src, Type typeOfSrc, JsonSerializationContext context) {    System.out.println(src); // This only prints valid values, no nulls...    return new Gson().toJsonTree(src, src.getClass());}為什么輸出包含空值以及如何消除它們?
查看完整描述

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}]


查看完整回答
反對 回復 2023-09-06
  • 1 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號