Джексон Json Сериализация: Удалить пустые строки - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь исключить все пустые строки из полученного Json, используя Джексона.

Я понимаю, что могу использовать приведенную ниже аннотацию, чтобы отфильтровать это, но, похоже, это не обрабатывает пустые строки. только пробелы]

@JsonInclude(JsonInclude.Include.NON_EMPTY) 

Есть ли способ сделать это?

1 Ответ

1 голос
/ 20 января 2020

Вы можете использовать custom value filter, попробуйте это и дайте мне знать, если это работает для вас -

@JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = CustomFilter.class)

и вот пользовательский фильтр -

class CustomFilter {
    public CustomFilter() {
    }
    @Override
    public boolean equals(Object obj) {
        if(obj == null)
            return true;
        if(obj instanceof String){
            return ((String)obj).trim().isEmpty();
        }
        return false;
    }
}

Согласно javado c фильтра CUSTOM -

public static final JsonInclude.Include CUSTOM

Значение, которое указывает, что отдельный filter Объект (заданный JsonInclude.valueFilter () для самого значения и / или JsonInclude. contentFilter () для содержимого структурированных типов) должен использоваться для определения критериев включения. Метод equals () объекта фильтра вызывается со значением для сериализации; если он возвращает истинное значение, то исключается (то есть отфильтровывается); если ложное значение включено.

...