在 JAX-RS 中使用多个 @JsonView (Jackson)

发布于 2025-01-15 21:24:44 字数 496 浏览 1 评论 0原文

我想使用多个 JsonView 来序列化响应。 例如,我有下面的对象:

public class A {
        
    @JsonView(FieldView.A.class)
    private String a;
    
    @JsonView(FieldView.B.class)
    private String b;
    
    @JsonView(FieldView.C.class)
    private String c;
        
}

我想添加视图 A 和 B 的序列化。但我没有找到任何解决方案,因为我使用的 ObjectMapper writeWithView 只接受一个视图(不是列表) ,这样如果我添加 A,则 B 和 C 将从响应中删除。

om.writeWithView(FieldView.A.class)

这是一种使用多个视图来 writeWithView 的方法吗? 谢谢

I want to use multiple JsonViews to serialize a response.
For example, I have the object below:

public class A {
        
    @JsonView(FieldView.A.class)
    private String a;
    
    @JsonView(FieldView.B.class)
    private String b;
    
    @JsonView(FieldView.C.class)
    private String c;
        
}

And I want to add on the serialization the views A and B. But I did not find any solution for that , because I'm using ObjectMapper writeWithView that accepts just one view (Not a List), this way if I add A then B and C are removed from the response.

om.writeWithView(FieldView.A.class)

Is that a way to writeWithView using more than one view?
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故笙诉离歌 2025-01-22 21:24:44

毕竟我做了一个解决方法。使用 SimpleBeanPropertyFilter,我使用 serializeAllExcept(Setfields) 创建了要丢弃的字段列表。

ObjectMapper mapper = new ObjectMapper();
SimpleBeanPropertyFilter theFilter = SimpleBeanPropertyFilter.serializeAllExcept(fields);
FilterProvider filters = new SimpleFilterProvider().addFilter("myFilter", theFilter);
mapper.setFilterProvider(filters);

After all I did a workaround. Using SimpleBeanPropertyFilter I created a list of the fields I want to discard with serializeAllExcept(Set<String> fields).

ObjectMapper mapper = new ObjectMapper();
SimpleBeanPropertyFilter theFilter = SimpleBeanPropertyFilter.serializeAllExcept(fields);
FilterProvider filters = new SimpleFilterProvider().addFilter("myFilter", theFilter);
mapper.setFilterProvider(filters);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文