【问题标题】:400 bad request - @RequestBody with Map<>400 错误请求 - @RequestBody 与 Map<>
【发布时间】:2017-05-14 13:06:02
【问题描述】:

我无法发送包含(键、值)映射的发布请求。

地图不适用于@RequestBody

请指教。

谢谢。

【问题讨论】:

    标签: spring jackson spring-restcontroller


    【解决方案1】:

    模型类:

    import com.fasterxml.jackson.annotation.JsonProperty;
    import com.fasterxml.jackson.databind.annotation.JsonSerialize;
    @JsonSerialize
    public class Model {
        @JsonProperty("fname")
        private String fname;
        @JsonProperty("lname")
        private String lname;
        private Model(){
    
        }
    }
    

    控制器方法:

     @RequestMapping(value = "/url", method = RequestMethod.POST)
        public ResponseEntity<?> method(@RequestBody Map<String, Model> values){
            return ResponseEntity.ok(values);
        }
    

    输入:

       {
        "key1":{
            "fname":"First Name",
            "lname": "Last Name"
        },
        "key2":{
            "fname":"First Name",
            "lname": "Last Name"
        }
    
    }
    

    输出:

       {
        "key1":{
            "fname":"First Name",
            "lname": "Last Name"
        },
        "key2":{
            "fname":"First Name",
            "lname": "Last Name"
        }
    
    }
    

    【讨论】:

    • map 的值可以是对象而不是字符串吗?地图
    • 能否告诉我版本号。我已经在消息转换器中配置了 jackson json api。我没有使用 @JsonSerialize 注释。我正在尝试完全相同的事情,但它不起作用。
    • 我用的Jackson版本是2.8.7
    • 谢谢,我已经解决了这个问题。需要映射到请求体的对象没有默认构造函数。我已经覆盖了一个。 Jackson json api 需要默认构造函数。你给了我对我的问题的希望。非常感谢。
    【解决方案2】:

    需要映射到请求体的对象没有默认构造函数。我已经覆盖了一个。 Jackson json api 需要默认构造函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 2017-08-04
      • 1970-01-01
      相关资源
      最近更新 更多