【发布时间】:2019-10-23 07:02:50
【问题描述】:
我有一个如下的帖子映射:
@PostMapping(value = "/profiles/{profileId}/verify/")
public Response getVerificationInformation (
@RequestBody VerificationBody body) {
... do something with the body
... call function A with body object
}
稍后在函数 A 中,我正在访问 body 对象以获取一些属性。
另外,在前端,我正在修改命中此帖子映射的 JSON 对象(我正在添加另一个属性)。
例如,
{
"name" : "Example",
"profileId" : "123",
// and I am dynamically adding an attribute 'country'
"country" : "US"
}
问题在于函数 A,我无法获取有关动态添加的属性(在本例中为“国家”)的信息。
为动态添加的属性声明 getter 并不理想,因为有很多属性是动态添加的。
我已经尝试了 @JsonAnySetter 和 @JsonAnyGetter 的方向,但我得到了 400。我正在寻找其他解决方案。
请帮助并提前感谢您! (我简化了一些变量和函数的名称,但我希望它不会太难理解。
VerificationBody 可以认为如下:
public class VerificationBody {
@JsonProperty(value = "name")
String name,
@JsonProperty(value = "profileId")
Long profileId,
// ... it does not include country
}
设法解决了 400 问题,我能够通过 JsonAnyGetter 和 JsonAnySetter 获取属性。
【问题讨论】:
-
如果是这样,为什么不使用
Map代替RequestBody? -
VerificationBody里面有什么?请分享课程。 -
@Prashant 我正在做一个相当大的项目,我非常不愿意更改请求正文类型,因为这将是一个很大的重构。
-
@VinayPrajapati 回答了这个问题
-
“我在
@JsonAnySetter和@JsonAnyGetter的方向上尝试了一些东西,但我得到了400”然后弄清楚为什么你会得到400,因为@987654329 @ 和@JsonAnyGetter是正确答案。查看导致 400 的错误的堆栈跟踪。