0 / 0 / 0
Регистрация: 28.04.2020
Сообщений: 10
1

Установить фильтр по умолчанию в jackson

24.07.2020, 14:13. Показов 1076. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята, всем привет. Прошу помощи, так как не могу найти информацию почему у меня не работает (в интернете говорят что должно работать).

Вообщем, у меня есть класс, который я хочу сериализовать, но, есть необходимость в некоторых местах игнорить какие либо поля класса. Не хочется на каждый класс вешать аннатацию @JsonFilter("default")

код класса

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
@SuperBuilder
@JsonSerialize
@JsonSchemaTitle("LightMessageJson")
public class LightMessageJson extends AbstractMessageJson {
    @Getter @Setter
    @JsonProperty(required = true)
    private String to;
    @Getter @Setter
    @JsonProperty(required = true)
    private String from;
    @Getter @Setter
    @JsonProperty(required = true)
    private String message;
    @Getter @Setter
    @JsonProperty(required = true)
    private String schedule;
    @Getter @Setter
    @JsonProperty(required = true)
    private String service;
    @Getter @Setter
    @JsonProperty(required = true)
    private Long templateId;
    @Getter @Setter
    @JsonProperty(required = true)
    private String templateSlug;
    @Getter @Setter
    @JsonProperty(required = true)
    private Map<String, String> params;
    
    @Override
    protected String getFromWho() {
        return from;
    }
 
    @Override
    protected String getToWho() {
        return to;
    }
 
    @Override
    protected String getBody() {
        return message;
    }
 
    @Override
    public void compareWithDto(MessageDto messageDto) {
        DateTimeUtils.compareDateTime(this.getSchedule(), messageDto.getCreated());
        Assert.assertEquals(this.getTemplateId(), messageDto.getMessageTemplateDto().getId());
        Assert.assertEquals(this.getTemplateSlug(), messageDto.getMessageTemplateDto().getSlug());
        Assert.assertEquals(this.getService(), messageDto.getMessageTemplateDto().getService());
    }
}
Метод, который сериализует.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 public static <T> String toJsonString(T t, String... excludeField) {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
 
        SimpleBeanPropertyFilter theFilter = SimpleBeanPropertyFilter
                .filterOutAllExcept(excludeField);
        SimpleFilterProvider filters = new SimpleFilterProvider().setDefaultFilter(theFilter);
        filters.setFailOnUnknownId(false);
        String result = null;
        try {
            result = objectMapper.writer(filters).writeValueAsString(t);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return result;
Получаю вот такой вот результат.

{"subject":"AT_EpZObaXfmZ","channel":"EMAIL","to":"at267710161@yandex.ru","from" :"at770872600@yandex.ru","message":"KbovxEUNQA","schedule":"2020-07-24T10:42:00.569","service":"RBO","templateId":641,"templateSlug":"vkm-na-map-email-3","params":{}}

вместо bjectMapper.writer(filters) пробовал использовать objectMapper.setFilterProvider(filters), результат такой же


Вызываю следующим образом
Java
1
2
LightMessageJson lightMessageJson = new LightMessageJson ();
toJsonString(lightMessageJson, "to")
В моих ожиданиях, я должен был получить вот такой вот ответ, без to

{"subject":"AT_EpZObaXfmZ","channel":"EMAIL","from":"at770872600@yandex.ru","mes sage":"KbovxEUNQA","schedule":"2020-07-24T10:42:00.569","service":"RBO","templateId":641,"templateSlug":"vkm-na-map-email-3","params":{}}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2020, 14:13
Ответы с готовыми решениями:

Установить программу по умолчанию
1. Некоторые простые программы меня не устраивают, например редактор текста &quot;xed&quot;. Если я правильно...

Установить кодировку по умолчанию
Помогите с проблемой, делал раньше, теперь этого проекта нет и я в непонятках. Требуется записать в...

NumericUpDown. Установить значение по умолчанию
Как написать, чтобы значение в NumericUpDown было или пусто или хотя бы &quot;0&quot;

Установить Portable программу по умолчанию
Доброго времени суток. Подскажите, как заставить Windows 10 Pro(1903 official) увидеть Portable...

2
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
24.07.2020, 16:05 2
а зачем это все, елси можно @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) так например, или просто JsonIgnore?
0
0 / 0 / 0
Регистрация: 28.04.2020
Сообщений: 10
24.07.2020, 16:10  [ТС] 3
Дело в том, в следующем вызове, мне нужно отправить json с параметром "to". Если я применю JsonIgnore, то это поле никогда не попадет в json.
0
24.07.2020, 16:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.07.2020, 16:10
Помогаю со студенческими работами здесь

combobox установить значение по умолчанию
Ребят помогите пожалуйста. Как можно в combobox сделать первое поле(поле, которое видно без нажатия...

Установить Chrome по умолчанию на Windows 10
Доброе время суток. Есть задача на большое количество ПК установить Chrome по умолчанию на Windows...

Установить регистр символов по умолчанию
Как установить регистр символов по умолчанию в прописные, в строчные? Не в момент вывода, а именно...

Как установить юникод по умолчанию?
Добрый день, наверное кому то вопрос покажется простым (подскажите): как установить юникод по...

Как установить программу по умолчанию ?
Всем привет. У меня есть свой текстовой редактор. Как установить этот текстовой редактор по...

Как установить громкость по умолчанию
Всем привет! Друзья, мне очень нужно установить громкость по умолчанию, чтоб при каждой загрузке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru