2013-09-05 5 views
0

У меня есть файл конфигурации, который может иметь следующие строки:.
исключающие employee.dept *
включают student.dept *иерархическая фильтрация в Джексон

Так на основе значений в этом файле мне нужно. подавлять или включать эти свойства в сериализованный JSON. Я посмотрел на реализацию BeanPropertyFilter, но это не дает мне подробностей о родительском узле, т. Е. Я знаю только, что я сериализую dept.deptCode, но я не знаю родителя узла dept, который может быть либо сотрудником, либо студентом , Любая идея, как достичь этой функциональности?

+0

Я опубликовал ответ на аналогичный вопрос. [Посмотрите здесь] (http://stackoverflow.com/questions/11036366/filter-nested-objects-using-jacksons-beanpropertyfilter/37859357#37859357) –

ответ

1

Ваш лучший выбор - вероятно, использовать Tree Model; то есть, чтобы прочитать JSON, как JsonNode:

JsonNode root = new ObjectMapper().readTree(jsonSource); 

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

Обратите внимание, что вы можете легко конвертировать между JsonNode и типами POJO, по мере необходимости:

MyObject ob = mapper.treeToValue(root, MyObject.class); 
JsonNode tree = mapper.valueToTree(ob); 

так, что преобразования и переводы можно сделать с помощью JSON деревьев, но вы все еще можете использовать POJO, в качестве источника или цели.

Смежные вопросы