Используя Gson, я хочу иметь возможность сериализации нулей в Map
с, но не в других классах. То есть, если у меня есть такой класс:
public class Foo {
@SerializedName("bar")
Bar bar;
@SerializedName("my_map")
Map<String, Object> myMap;
}
Если поле bar
равно нулю и myMap
содержит одну запись "key" -> null
, я хочу, чтобы полученная строка JSON была:
{
"my_map": {
"key": null,
}
}
Однако мне нужно, чтобы это работало очень обобщенно: у меня много классов со сложной иерархией, а классы и контейнеры могут быть глубоко вложенными.
Я пробовал следующее:
с использованием Gson gson = new GsonBuilder().serializeNulls().create()
. Это не работает, потому что сериализует все нулевые значения.
с использованием TypeAdapterFactory
. Это почти работает, но я не могу найти способ повторно использовать Gson по умолчанию MapTypeAdapter
с контекстом сериализации, где serializeNulls = true
. MapTypeAdapter
- это final
, поэтому я не могу сделать его подклассом. Я не хочу писать TypeAdapter
с нуля для сериализации карт.
Я чувствую, что есть простое решение, которое мне не хватает. Любая помощь приветствуется.