首页 > 解决方案 > Spring Boot 变量/嵌套请求体

问题描述

我正在开发一个允许用户将逻辑表达式上传到服务器的 Spring Boot 应用程序。Web 应用程序允许他们直观地创建表达式。Web 应用程序的结果如下所示

{
  "id": "someId",
  "fullexpression": {
    "left": "a",
    "operator": "AND",
    "right": {
        "left": {
            "left": "x",
            "operator": "AND",
            "right": "y",
        }
        "operator": "OR",
        "right": "z"
    }
  }
}

上面的示例描述了表达式a AND ((x AND y) OR z)

我发现一篇Baeldung 文章说:

我们使用@RequestBody 注解注解的类型必须对应于从我们的客户端控制器发送的 JSON

如果我正确理解了这篇文章,就不可能直接这样做。构建允许RequestBody像这样嵌套的 Spring Boot 休息控制器的最佳方法是什么?当然,我总是可以在客户端将 JSON 转换为字符串,然后在其余控制器中解析它,但这看起来并不优雅。

标签: javaspringspring-bootdto

解决方案


将 RequestBody 参数定义为 JsonNode:

public <something> myService(@RequestBody JsonNode jsonNode) {}

推荐阅读