【问题标题】:Spring boot variable/nested request bodySpring Boot 变量/嵌套请求体
【发布时间】:2021-10-21 16:24:23
【问题描述】:

我正在开发一个允许用户将逻辑表达式上传到服务器的 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 article,上面写着:

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

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

【问题讨论】:

    标签: java spring spring-boot dto


    【解决方案1】:

    将RequestBody参数定义为JsonNode:

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

    【讨论】:

      【解决方案2】:

      您可能会使用如下所示的类:

      public class Form {
          private String id;
          private Expression fullexpression;
      
          // constructor, getters and setters
      }
      

      Expression 类具有 left、operator (String) 和 right 字段。

      由于左右字段的类型可以是String或者Expression,我建议你将它们的类型设置为Map或者JsonNode..但是我还没有测试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-27
        • 2019-05-12
        • 2021-12-15
        • 1970-01-01
        • 1970-01-01
        • 2015-06-17
        • 2019-05-19
        • 2021-05-21
        相关资源
        最近更新 更多