当前位置: 首页 > 知识库问答 >
问题:

如何将@requestBody转换为自定义对象?

欧阳德运
2023-03-14

我将springboot控制器与@RequestBody一起使用。我有以下json请求正文

{
  "abc":"xyz",
  "valid":"yes"
}

我有一个对应的POJO

class MyObject{
  private String abc;
  private Boolean valid;
}

我有控制器就像

@PostMapping(value = "somePath", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<MyResponse>  myMethod(@RequestBody MyObject request)  {

显然它不起作用,因为有效是请求中的字符串,而它在MyObject中是布尔值。我希望它有一个逻辑,所以如果有效=yes在请求中,它将在MyObject中转换为布尔值true。Spring有什么机制来实现这一点?

共有1个答案

蒲魁
2023-03-14

如果您使用jackson注释来注释您的MyObject,这是可能的:在这种情况下,您可以使用JsonCreator注释创建一个all args构造函数并在那里定义您的预期行为:

public class MyObject {

    private String abc;
    private Boolean valid;

    @JsonCreator
    public MyObject(String abc, String valid) {
        this.abc = abc;
        if (valid.equals("yes")) {
            //be aware valid will remain null 
            //if valid is different from yes
            this.valid = true; 
        }
    }

}
 类似资料:
  • 这是我的字符串格式的肥皂xml,我需要如何在Farm对象中形成它。Farm是我的自定义类,任何库都是现成的 使用此代码后,我得到了异常 意外元素(uri:“http://yyyyyy . yyyyy * * * * * * * *”,local:“farm”)。预期的元素有

  • 问题内容: 我正在尝试为Json.NET创建一个自定义ValueProvider,它将跳过序列化所有对象的过程,并将仅返回Guid类型的属性来表示其主键(作为参考)。 例: 应成为: 这是我到目前为止编写的代码。我非常接近使其工作,但是就我而言,我似乎无法获取对象值。我怎样才能做到这一点? 问题答案: 您希望将值从嵌套对象内部提升到父对象。为此,您需要将两个价值提供者链接在一起: 一个外部值提供者

  • 给定以下示例代码 不可能将变量传递给函数,因为 类型为“MyInterface”的参数不可分配给类型为“Record”的参数 我通过转换变量解决了这个问题

  • 我对大摇大摆的文档很陌生。我们有一个现有的项目正在为RESTFul Web服务开发进度语言。不同的基于资源的URL以Application/JSON格式使用和生成。下面给出了一个资源url的输入和输出json格式: 如何将上述请求和响应json格式转换为swagger 2.0 json格式? 谢了!

  • 使用代替和代替 然后在请求属性中添加 但是当我在javascript中检索它时,我得到了jsonObject的值 我在我的项目中已经使用了下面的库,如果需要,可以使用任何新的库

  • 我目前有一个自定义对象数组 [基因报告员] 定义如下: 当打印到console时,它如下所示: [MyMovieGuide.GenrePosters(海报:/e1mjopzAS2KNsvpbpahQ1a6SkSn.jpg),MyMovieGuide.GenrePosters(海报:/jjbgi2r5crt36xf6inuehzsceb.jpg),MyMovieGuide.GenrePosters(