簡體   English   中英

gson :將空字符串視為空

[英]gson : Treat Empty String as null

我正在使用 gson 將 java 對象序列化為 json。

Gson gson = new GsonBuilder().serializeNulls().create();

這個構建器處理空值很好。 但與此同時,我希望它也將空字符串處理為空。

如何才能做到這一點?

您需要注冊一個自定義 TypeAdapter來包裝現有的 String TypeAdapter 並用 JSON null 替換空字符串。

示例代碼:

public static void main(String[] args) {
    Gson gson = createGson();
    System.out.println(gson.toJson(Arrays.asList("foo","bar","",null,"phleem")));
}

static Gson createGson() {
    return new GsonBuilder().serializeNulls()
                            .registerTypeAdapter(String.class,
                                                 new EmptyToNullTypeAdapter())
                            .create();

}

static class EmptyToNullTypeAdapter extends TypeAdapter<String> {

    @Override
    public void write(final JsonWriter out, final String value) throws IOException {
        if (value.isEmpty()) {
            out.nullValue();
        } else {
            TypeAdapters.STRING.write(out, value);
        }
    }

    @Override
    public String read(final JsonReader in) throws IOException {
        return TypeAdapters.STRING.read(in);
    }

}

輸出:

["foo","bar",null,null,"phleem"]

警告

最后:不確定這是一個好主意,因為它是一個非對稱解決方案,即當您反序列化一個對象,然后再次序列化它時,您的新對象將不等於原始對象(空值而不是空字符串)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM