2015-02-03 7 views
0

У меня есть конечная точка отдыха, которая имеет множество атрибутов. Пользователь может выбрать необходимые им атрибуты. По выбору пользователя мне нужно сгенерировать отчеты.Динамически построить объект ответа json

Я использую restTemplate для получения данных из конечной точки и заполнения моего объекта ответа.

Есть ли способ генерировать объект ответа динамически.

Как если пользователь выбирает

B C D

 restTemplate.exchange(uri, HttpMethod.GET, null, response.class); 

В этом случае мой объект ответа должен выглядеть

 @JsonIgnoreProperties(ignoreUnknown = true) 

общественного класса Response {

@JsonProperty("A") 
public String A; 

@JsonProperty("B") 
public String B; 

@JsonProperty("C") 
public Integer c; 

@JsonProperty("D") 
public String D; 

} 

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

ответ

0

Одним из возможных решений может быть создание динамического фильтра.

Jackson имеет встроенный фильтр-механизм, который работает с простой фильтрацией свойств. Реализация по умолчанию довольно простая. Он позволяет фильтровать простые свойства.

Идея состояла в том, чтобы динамически создавать строковый массив свойств для фильтрации (включать и исключать) с запросом на ввод и соответствующим образом строить ответ.

Если вы хотите использовать более сложный фильтр, вы можете попробовать библиотеку аддона, которую я просто нажал на github.

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

https://github.com/Antibrumm/jackson-antpathfilter

0
Map<String, Object> map = new HashMap<>(); 
map.put("A", "hello"); 
map.put("B", 2); 
String s = objectMapper.writer().writeValueAsString(map); 
System.out.println("s = " + s); 

Выход

s = {"A":"hello","B":2} 
+0

Я хочу по-другому, у меня есть JSON с 100 атрибутов, и я хочу, чтобы выбрать атрибуты по требованию пользователя только может быть 5 из 100, выбранные 5 будут отличаться. – Hari

+0

Затем проанализируйте его с помощью карты и повторите запись записей. –

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