У меня есть код serialiaze только определенные поля в объекте, используя filterOutAllExcept:Джексон: пустые вложенные объекты при использовании фильтрации
FilterProvider newF = new SimpleFilterProvider().addFilter(
"filter properties by name",
SimpleBeanPropertyFilter.filterOutAllExcept(fields2Show)
);
writer = mapper.writer(newF);
Когда fiels2Show
является null
, выше код не запускать, фильтр не применяется, и я получить вложенные объекты правильно, что-то вроде этого:
[ {
"phone" : null,
"duration" : 1200000,
"unique_id" : "376_1244",
"id" : 1244,
"record_types" : [ {
"customer_id" : 376,
"max_age" : 20,
"min_age" : 10,
"id" : 15351,
"entity_type" : "CalendarRecordType"
}, {
"customer_id" : 376,
"max_age" : 30,
"min_age" : 10,
"id" : 15352,
"entity_type" : "CalendarRecordType"
} ]
} ]
Но когда fields2Show
установлен, как-то все идет не так. Пусть fields2Show
будет Set<String>
, который содержит только одну строку "record_types". Затем я получаю такой результат:
[ {
"record_types" : [ { }, { } ]
} ]
Почему?
результат в точности соответствует ожидаемому: все отфильтровано, кроме "record_types". в чем проблема? –
@sharonbn Проблема в том, что «record_types» теперь является массивом пустых объектов, а не сериализован. На самом деле бесполезно. –