2016-05-04 72 views
0

我想從我的json中刪除所有的空值。使用jackson從json中刪除空值

{ 
    "key" : null 
} 

我用:

ObjectMapper mapper = new ObjectMapper(); 
mapper.setSerializationInclusion(Include.NON_NULL); 

這裏的 「鑰匙」 是列表,所以當我用上面的序列化選項,JSON被轉換爲:

{ 
    "key" : [] 
} 

我想json爲:

{ 
} 

我d不想使用

Include.NON_EMPTY 

因爲我在我的項目中有其他json我需要顯示空列表和0值的鍵。有沒有什麼辦法可以在列表中刪除空值鍵,就像字符串值一樣?

我不能使用註釋,因爲使用jaxb從xml生成類文件。課程結構:

public class C1 { 

protected List<C2> key; 

public List<C2> getKey() { 
    if (key == null) { 
     key = new ArrayList<C2>(); 
    } 
    return this.key; 
} 

} 

我一直堅持了一會兒。任何幫助,高度讚賞。提前致謝。

+0

你有沒有嘗試過使用類之上的註釋。 @ user145078 –

+0

在我們的生產環境中,我們使用jaxb將xml轉換爲pojo,所以我沒有任何對創建的java文件的控制權,並且不能使用註釋@VikrantKashyap – user145078

+0

,那麼您已經編寫了一個自定義的NullSerializer以避免那個'key'序列化對象。 @User –

回答

4

要與null值抑制序列化的屬性,

你可以直接使用這個配置ObjectMapper

mapper.setSerializationInclusion(Include.NON_NULL); 
+0

這就是我所做的。但是對於列表值,它將null轉換爲[]。我想從json本身刪除該密鑰。有沒有辦法做到這一點? – user145078