zoukankan      html  css  js  c++  java
  • spring中RequestBody注解接收参数时用JSONField转参数名无效问题

    问题:

      在springboot项目中使用@RequestBody注解接收post请求中body里的json参数的情况。即:

     1     @RequestMapping(value = "/get-user", method = RequestMethod.POST)
     2     public String getUser(@RequestBody User user) {
     3         System.out.println("user_name:" + user.getUserName());
     4         return JSON.toJSONString(user);
     5     }
     6 
     7 
     8     @Getter
     9     @Setter
    10     public class User {
    11 
    12         private String id;
    13 
    14         @JSONField(name = "user_name")
    15         private String userName;
    16     }

      此时,当传递的json参数中,参数名不是userName而是user_name时,会接收不到,相当于使用了@JSONField注解无效果。

    解决方案:

      改为使用@JsonProperty(value = "user_name")注解即可,如下:

    1     @Getter
    2     @Setter
    3     public class User {
    4 
    5     private String id;
    6 
    7     @JsonProperty(value = "user_name")
    8     private String userName;
    9     }

      为什么呢?原因在于@RequestBody注解默认使用的是Jackson来解析的。而@JsonProperty注解才是Jackson的,@JSONField注解则是FastJson的,所以才会导致加@JSONField注解无效的情况。

  • 相关阅读:
    HTTP状态码
    NSData NSDate NSString NSArray NSDictionary 相互转换
    NSDictionary to jsonString || 对象转json格式
    git 上传本地文件到github
    NSAssert用法
    深入理解GCD(一)
    ug-Assertion failure in [MyClass layoutSublayersOfLayer:]
    构建之法阅读笔记01
    学习进度
    四则运算程序
  • 原文地址:https://www.cnblogs.com/pcheng/p/11550749.html
Copyright © 2011-2022 走看看