Я пытаюсь найти глобальную ObjectMapper
конфигурацию (или любую другую настройку) для всех json Map<String, String>
, чтобы десериализовать ее в карту без значений null
(вместо этого должна быть пустая строка)
например,
class MyClass {
Map<String, String> dict;
String str;
public MyClass() {
}
public MyClass(Map<String, String> dict, String str) {
this.dict = dict;
this.str = str;
}
public Map<String, String> getDict() {
return dict;
}
public String getStr() {
return str;
}
}
...
final Map<String, String> dict = new HashMap<>();
dict.put("k1", "v1");
dict.put("k2", null);
final MyClass myClass = new MyClass(dict);
final String valueAsString = objectMapper.writeValueAsString(myClass);
final MyClass deserialized = objectMapper.readValue(valueAsString, MyClass.class);
deserialized.getDict().get("k2"); // = "" (empty String)
deserialized.getStr(); // = null
Я знаю, что могу сделать это за POJO, пометив свой класс с помощью @JsonDeserialize(using = MyDeserializer.class)
, но я хочу, чтобы он работал для всех карт.
Я также пытался настроить это решение для работы с десериализацией, но оно выбрасывает NullPointerException
update: преобразование "ноль в пусто" должноработа только на картах (со строковым значением).(см. обновленный пример выше)