【问题标题】:JsonView in Spring Boot not filtering responseSpring Boot中的JsonView不过滤响应
【发布时间】:2016-06-17 03:37:51
【问题描述】:

我正在开发一个 Spring Boot 应用程序,我想根据 JsonView 过滤我的一些端点响应。我正在遵循

中列出的模式

https://spring.io/blog/2014/12/02/latest-jackson-integration-improvements-in-spring

但是响应总是包含我的响应对象的全部属性,而不是我期望的子集。

我的(简化的)代码:

@RestController
@EnableAutoConfiguration
@ComponentScan
public class Controller {
    @RequestMapping("/")
    @JsonView(Responder.OnlyMyName.class)
    Responder home() throws JsonProcessingException {
        Responder responder = new Responder();
        return responder
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Controller.class, args);
    }
}

响应者

public class Responder {

    @JsonView(OnlyMyName.class)
    public String name="My name";

    @JsonView(Everything.class)
    public String value="My value";

    public class OnlyMyName{}
    public class Everything extends OnlyMyName{}
}

响应如下所示:{"name":"My name","value":"My value"},而我希望它是 {"name":"My name"}

显然我遗漏了一些东西,但我无法弄清楚它可能是什么。请帮忙!

【问题讨论】:

  • 你可能需要@ResponseBody注解
  • @ResponseBody 使用 @RestController 时是隐式注释

标签: java spring spring-mvc jackson


【解决方案1】:

Jackson 参数 MapperFeature.DEFAULT_VIEW_INCLUSION 应设置为 false。

类似的东西

final ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);

【讨论】:

  • 如何在 Spring boot 2 中配置这个?
猜你喜欢
  • 2017-06-09
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
  • 2014-10-23
  • 2020-03-24
  • 2020-09-09
  • 1970-01-01
  • 2021-01-04
相关资源
最近更新 更多