我有一个具有一组属性的休息终点。用户可以选择他们需要的属性。根据用户选择,我需要生成报告。
我使用restTemplate从端点获取数据并填充我的响应对象。
有没有办法可以动态生成响应对象。
如果用户选择
一个 乙 C d
restTemplate.exchange(uri, HttpMethod.GET, null, response.class);
在这种情况下,我的响应对象应该看起来像
@JsonIgnoreProperties(ignoreUnknown = true)
public class Response {
@JsonProperty("A")
public String A;
@JsonProperty("B")
public String B;
@JsonProperty("C")
public Integer c;
@JsonProperty("D")
public String D;
}
目前我静态定义响应类,我们可以根据用户所需的属性动态定义响应类。请告诉我怎么做。
答案 0 :(得分:1)
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}
答案 1 :(得分:0)
一种可能的解决方案是创建动态过滤器。
Jackson有一个内置的过滤机制,可用于简单的属性过滤。 默认实现非常基本。它允许过滤简单的属性。
我们的想法是动态创建字符串数组属性,以便根据输入请求进行过滤(包含和排除),并相应地构建响应。
如果你想要一个更柔和的过滤器,你可以尝试一个我刚刚推上github的插件库。
即使您不需要这种高级过滤,我认为我的自述文件的Usage
部分可以为您提供有关过滤方法的一些提示。