java - 休息服务在 POJO 中序列化 JSON 请求后如何调用方法?

标签 java rest spring-boot serialization

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 注释告诉它应以什么顺序将值传递到构造函数中。

如果您确实只想连接 str1str2 并将其另存为 str3,您也可以在其中延迟初始化它 setter/getter :

public String getStr3(){
    if(str3 == null){
        str3 = str1 + str2;
    }
    return str3;
}

关于java - 休息服务在 POJO 中序列化 JSON 请求后如何调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51051408/

相关文章:

java - Java 中的 JSON 数组语法

java - 从 Java 打印 PDF 文档时,部分文本会旋转

java - 无法转换为org.springframework.security.core.userdetails.UserDetails,根本原因是Java spring-boot security错误

java - 具有兄弟项目依赖关系的多模块 Maven Spring boot 项目

java - 如何在spark RDD(JavaRDD)中获取记录的文件名

java - 重构会对java性能产生负面影响吗?

javascript - 更改检测 休息调用 Angular 2

java - 解决 xml RESTful 问题的最简单 Jersey 客户端

java - Spring RestTemplate : Overridding ResponseErrorHandler not working when set in Configuration class

java - quartz 调度程序 : Failed to obtain DB connection from data source