动态构建响应实体json

时间:2015-02-03 18:03:36

标签: java spring java-ee spring-security

我有一个具有一组属性的休息终点。用户可以选择他们需要的属性。根据用户选择,我需要生成报告。

我使用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;

}

目前我静态定义响应类,我们可以根据用户所需的属性动态定义响应类。请告诉我怎么做。

2 个答案:

答案 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部分可以为您提供有关过滤方法的一些提示。

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