MyPojo.java
public class MyPojo
{
private String str1;
private String str2;
private String str3;
//setters
//getters
}
休息 Controller
@RestController
public class MyController
{
public @ResponseBody
String getDetails(@RequestBody MyPojo myPojo)
{
}
}
json请求
{
"str1" : "value1",
"str2" : "value2"
}
现在,当我从 postman 进行 API 调用并在 Controller 的第一行中设置断点时,我可以看到 RequestBody 变量 myPojo 已被序列化并且具有两个变量的值。 这对我来说是正确的。
现在我想要一些功能,例如,我可以在其中调用一个方法,该方法从 str1 和 str2 中获取值,并将 str3 设置为 str1 和 str2 连接的值。
我有什么尝试 1:通过@Component使POJO成为组件,但它在加载上下文时初始化值,此时对象为空
在 API 中收到请求后,有什么方法可以将串联值分配给 str3
吗?
最佳答案
您可以在构造函数上使用@JsonGenerator
来解决此问题:
@JsonGenerator
public MyPojo(@JsonProperty("str1") String str1, @JsonProperty("str2") String str2) {
this.str1 = str1;
this.str2 = str2;
this.str3 = str1 + str2;
}
如果存在 @JsonGenerator
注释,Jackson(spring 使用的反序列化器)将调用此构造函数。 @JsonProperty
注释告诉它应以什么顺序将值传递到构造函数中。
如果您确实只想连接 str1
和 str2
并将其另存为 str3
,您也可以在其中延迟初始化它 setter/getter :
public String getStr3(){
if(str3 == null){
str3 = str1 + str2;
}
return str3;
}
关于java - 休息服务在 POJO 中序列化 JSON 请求后如何调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51051408/