是否可以用springboot为Jackson的编写部分指定一个模式。
例如:
我有两节Pojo课。
class A {
int a;
B b;
public A() { }
// Getter and Setter
}
class B {
double d;
String s;
public B() { }
// Getter and Setter
}
我有一项服务
public SomeClass {
@RequestMapping(path = "/mapping", method = RequestMethod.POST)
public A recupererPESRetourDepuisPlateformeBLES()
return callToSomeMethodThatReturnsA();
}
}
有没有办法为我想要的返回类型指定:
我的对象A
的属性a
和b
以及对象B
的属性s
。
我希望客户端以某种方式将我们想要的发送到服务器,服务器 * 解析 * 所需的模式并只返回它。
我知道@JsonIgnore
和@JsonProperty
。我也知道GraphQL,但我想留在Jackson身边。
更新1
示例:
我已经在Java中示例化了这样一个结构(为了简化,这里用JSON表示)
"A" {
"a": 12,
"b": {
"d": 23.362,
"s": "Hello world"
}
}
在我的请求之后,我希望服务器向客户端发送:
"A" {
"a": 12,
"b": {
"s": "Hello world"
}
}
我不知道我的客户端可以向我的服务器发送什么样的数据,以指定我希望作为输出的数据的模式。
2条答案
按热度按时间sd2nnvve1#
我假设您希望能够进行深度过滤(能够基于类A和B的属性进行过滤)。要实现这一点,您可以使用以下过滤器:
下面是如何使用它完整示例
因此,例如,如果您只想返回对象
A
的属性"a"
,首先您将创建如下所示的控制器方法:如果你发送这样的请求:
输出应为
{"a":1}
如果你想显示
A
类的属性b
,使用字段s
,你将发送如下请求:并且输出应为
{"b":{"s":"b test"}}
据我所知,没有其他方法可以达到你想要的(只使用Jackson)。
gt0wga4j2#
Sping Boot 动态过滤概念在这种情况下应该会有所帮助。将方法recupererrPESRetourDepuisPlateformeBLES()的返回类型修改为MappingJacksonValue。以下是需要进行的代码更改:
使用@JsonFilter为目标Response类添加注解,如下所示
希望。这应该能解决问题。