簡體   English   中英

為什么不將此空值序列化?

[英]why is this null value not being serialized?

因此,我有一個要序列化為gson的對象, end值為null。 但是,不是在json對象中顯示為null ,而是在json對象中缺少整個end鍵值對。

這是該對象的POJO。

public static class History {
   @NonNull
   public final String areaId;
   @NonNull
   public final String userId;
   public final long start;
   @Nullable
   public final Long end;
   public History(@NonNull String areaId, @NonNull String userId, long start, @Nullable Long end) {
        this.areaId = areaId;
        this.userId = userId;
        this.start = start;
        this.end = end;
   }
}

這是gson Builder

GsonBuilder()
    .serializeNulls()
    .registerTypeAdapter(Date.class, new DateFormatter())
    .setFieldNamingStrategy(fieldNamingStrategy)
    .create();

這就是json的實際外觀

areaUserHistories": {
         "aff824c6-df4f-49b4-8dea-6c204cb7bb16": {
         "areaId": "ca5f5e6f-77eb-4859-a2ad-c3b249e53493",
         "start": 1524178713,
         "userId": "911705136"
        }
    } 

這就是它的樣子

areaUserHistories": {
         "aff824c6-df4f-49b4-8dea-6c204cb7bb16": {
         "areaId": "ca5f5e6f-77eb-4859-a2ad-c3b249e53493",
         "start": 1524178713,
         "end": null
         "userId": "911705136"
        }
    },

EIDT 1

因此,我進行了實驗,並將這一行代碼添加到GsonBuilder中.setLongSerializationPolicy(LongSerializationPolicy.STRING)

以便Gson Builder現在將Long值轉換為String。 這導致end=null值被正確添加。 不幸的是,該值必須為Long。

GsonBuilder gsonBuilder = new GsonBuilder();

gsonBuilder.serializeNulls();

Gson gson = gsonBuilder.create();

String jsonString = gson.toJson(object); 

暫無
暫無

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

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