@RequestBody时第二个字母大写,映射不到的解决

@RequestBody第二个字母大写,映射不到

记录一下今天遇到的一个问题, 贼难受

controller

 /**
     * 添加
     *
     * @param requestNavigationTagVO
     * @return
     */
    @PostMapping("/add")
    public JsonData add(@RequestBody RequestNavigationTagVO requestNavigationTagVO) {
        navigationTagService.add(requestNavigationTagVO);
        return JsonData.ok();
    }

RequestNavigationTagVO

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
public class RequestNavigationTagVO {
    /**
     * id
     */
    private Long id;

    /**
     * 所属导航id
     */
    @NotNull(groups = {AddNavigationTag.class, ModifyNavigationTag.class}, message = "所属导航id不能为空")
    private Long pId;

    /**
     * 标签名称
     */
    @NotBlank(groups = {AddNavigationTag.class, ModifyNavigationTag.class}, message = "标签名称不能为空")
    private String name;

    /**
     * 排序
     */
    @NotNull(groups = {AddNavigationTag.class, ModifyNavigationTag.class}, message = "排序不能为空")
    private Integer sort;
}

postman调接口

{
 "pId": 654577072911111,
 "name":"中餐",
 "sort":1
}

这是日志拿到的数据

可以看到拿不到pId数据(p_id的驼峰写法),

原因:这里使用的@Data注解(省去了get和set方法)

 public Long getPId() {
        ...
    }

 public void setPId(Long PId) {
     ...
 }

而javaBean的规范导致json传参首字母大写将永远获取不到

参考javaBean的规范导致json传参首字母大写将永远获取不到。。。

解决办法:

1,不去使用首字目大写或第二个字母大写的参数

2,自己生成get和set方法

3,使用@JsonProperty注解

 @JsonProperty("pId")
 private Long pId;

Springboot中@RequestBody大小写转换

使用fastjson

请求参数首字母转为小写

@Data
public class RequestModel {
    @JsonProperty("BODY")
    @JSONField(name = "BODY")
    private RequestBodyModel Body;
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • SpringBoot 请求参数忽略大小写的实例

    我就废话不多说了,大家还是直接看代码吧~ import java.io.IOException; import java.util.Collections; import java.util.Enumeration; import java.util.Map; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.annotation.WebFilter; imp

  • SpringBoot http post请求数据大小设置操作

    背景: 使用http post请求方式的接口,使用request.getParameter("XXX");的方法获取参数的值,当数据量超过几百k的时候,接口接收不到数据或者接收为null. @RequestMapping(value = "/rcv",method = RequestMethod.POST) public ResInfo<String> pullApi(HttpServletRequest request) { String channe

  • Spring boot @RequestBody数据传递过程详解

    这篇文章主要介绍了Spring boot @RequestBody数据传递过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 @RequestBody需要接的参数是一个string化的json @RequestBody,要读取的数据在请求体里,所以要发post请求,还要将Content-Type设置为application/json java的api 参数为JSONObject,获取到的参数处理 @PostMapping("/combine

  • SpringMVC restful 注解之@RequestBody进行json与object转换

    由于快过年的原因,项目组没有太多任务,闲来无事研究了一下spring中restful调用.发现spring竟然已经强大到如此境界,程序员已经不需要在关心在写接口的过程中数据的转换以及调用,只需要专注业务.下面我总结一下步骤及其在研究过程的遇到的问题. 步骤: 1.git clone https://github.com/spring-guides/gs-rest-service.git 从spring官网上下载了源码 2.进行maven编译(gradle也行) 3.运行.访问http://loc

  • @RequestBody时第二个字母大写,映射不到的解决

    @RequestBody第二个字母大写,映射不到 记录一下今天遇到的一个问题, 贼难受 controller /** * 添加 * * @param requestNavigationTagVO * @return */ @PostMapping("/add") public JsonData add(@RequestBody RequestNavigationTagVO requestNavigationTagVO) { navigationTagService.add(reques

  • 解决javaBean规范导致json传参首字母大写将永远获取不到问题

    javaBean规范导致json传参首字母大写获取不到 规范中另一个特别的地方就是: 1.第二个字母为大写的属性名要区别对待 如果属性名的第二个字母是大写的,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,就是说大小写不变. 2.属性是首字母大写 次字母小写是,你永远都找不到它的 getter/setter 方法的. 3.对于 boolean 类型属性的 getter 方法 是 isXxx() 还是 getXxx() 就自己决定了,isXxx() 应该更接近于

  • jackson json序列化实现首字母大写,第二个字母需小写

    有这样一个类: @Setter @Getter @JsonNaming(value = PropertyNamingStrategy.UpperCamelCaseStrategy.class) public class Student { private String bName; } 序列化后,希望首字母大写,如下面的测试代码: @Test public void contextLoads() throws IOException { Student test = new Student();

  • PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例

    本文实例讲述了PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法.分享给大家供大家参考,具体如下: 1.如何在php中把驼峰样式的字符串转换成下划线样式的字符串.例:输入是FooBar的话,输出则是foo_bar 以下是用正则的方式去完成,既然用到正则,方法肯定就不只一种,我们看下下面的方式 echo strtolower(preg_replace('/(?<=[a-z])([A-Z])/', '_$1', 'fooBar')); //output:foo_bar echo &quo

  • jackson解析json字符串,首字母大写会自动转为小写的方法

    问题 楼主碰到的问题是,在实体类和表中定义的某个字段为RMBPrice,首字母大写,sql查询出来的列名也是大写的RMBPrice,但是使用jquery的datatables初始化列时,却出错. 那一行的代码如下: {"name": "RMBPrice", "data": "RMBPrice", "className": "text-center", "render"

  • Javabean转换成json字符并首字母大写代码实例

    这篇文章主要介绍了javabean转成json字符并首字母大写代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天写接口的时候有个需求将接口返回的json字符串首字母大写:{"SN":"","Result":""}格式, 只需要在返回bean里面属性上加上@JsonProperty注解就可以了 import com.fasterxml.jackson.annotati

  • 解决使用mybatis-plus时,生成的SQL大写变小写加下划线问题

    在application.xml加上以下配置 mybatis-plus.configuration.map-underscore-to-camel-case=false 补充知识:mybatis中的大小写转义 在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用<![CDATA[ ]]>来解决. <![CDATA[ ]]> 是什么,这是XML语法. 在CDATA内部的所

  • @RequestBody不能映射到对象的解决

    目录 @RequestBody不能映射到对象 解决方法 @RequestBody使用方法(将数据映射到java对象上) 1.请求方式如下 2.对象定义如下 3.可以看到,json数据映射到UserEntity里 @RequestBody不能映射到对象 在使用@RequestBody 映射对象时总是获取不到json穿过来的值 @RequestMapping(value = "/json") public @ResponseBody Items json(@RequestBody Item

  • Python实现将不规范的英文名字首字母大写

    例如 输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']. 方法一 def wgw(x): return [x[0].upper(),x[1:].lower()] map(wgw,['adam','LISA','barT']) 方法二 def wgw1(x): return x.capitalize() map(wgw1,['adam','LISA','barT']) 方法三 map(lambda x:x.capitalize(),['

  • php实现字符串首字母大写和单词首字母大写的方法

    本文实例讲述了php实现字符串首字母大写和单词首字母大写的方法.分享给大家供大家参考.具体分析如下: ucfirst可以对字符串首字母进行大小,ucwords可以对字符串中每个单词的首字母大写输出 <?php print ucfirst("hello world"); print ucwords("iam king of the jungle"); ?> 希望本文所述对大家的php程序设计有所帮助.

随机推荐