gpt4 book ai didi

java - Spring中使用JsonFilter动态序列化

转载 作者:行者123 更新时间:2023-12-02 09:34:40 25 4
gpt4 key购买 nike

我正在尝试在 Spring Boot 2 中动态序列化给定的 POJO。我的用例是,我有一个非常大的模型文件,我只想检索字段的子集。我在互联网上找到的方法是使用@JacksonFilter,即用@JsonFilter注释POJO并在序列化时使用该过滤器名称。

下面是代码示例

@JsonFilter("myfilter")
class Resource1{
String firstName;
String lastName;
Address address;
}

class Address {
String addr1;
String addr2;
String zipcode;
}

在序列化时,如果我只想要名字,我会这样做

SimpleFilterProvider filterProvider = new SimpleFilterProvider();
filterProvider.addFilter("myfilter", SimpleBeanPropertyFilter.filterOutAllExcept("firstName"));

ObjectMapper mapper = new ObjectMapper();
mapper.setFilterProvider(filterProvider);
mapper.writeValueAsString(resource1_instance); // Resource 1 instance

现在,例如,我想过滤另一个 POJO,我需要为该给定类声明 JsonFilter,并且对于任何给定 POJO 都会重复此操作。

我担心的是,为了动态序列化字段的子集,对于每个给定的 POJO,我们需要添加 @JsonFilter("suitable_name") 并序列化它。

有没有办法声明一个通用的@JsonFilter并像继承概念一样重用它。

如果我使用@JsonIgnore,那将是静态的并且是固定的。

我的要求是,如果模型具有 v,w,x,y,z 属性,并且我在运行时仅请求 x,y 属性,则通用过滤器将仅序列化 POJO 的 x,y 属性并返回给我

对此的任何建议都会有很大帮助。提前致谢

最佳答案

为了对更简单的用例进行动态过滤,我为 jackson 编写了一个插件来使用 antpath 样式过滤。它应该正是您搜索的内容。

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

关于java - Spring中使用JsonFilter动态序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57635893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com