springboot项目接收json转对象,首字母大小写,个别参数获取不到解决方案

  只说一下本人在项目中遇到的情况,springboot项目接收参数,有时候一些特殊字符却无法解析封装到实体,获取的为null

比如实体首字母小写的属性 aMagicBook,类似这种的参数通过@RequestBody 实体就无法接收到,后来参考网上资料,加上了

jackson依赖

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>

使用注解@JsonProperty("aaa"") 解决了这个问题

由此可以倒推出来这个问题导致的原因就是前端传值到后台使用jackson转换为对象实体的时候,转换过程中导致的问题,使用这个注解相当于起了一个别名aaa,前后台交互会使用别名aaa进行交互,从而解决装换过程中大小写的问题.

具体的原因需要深入看下springboot自带jackson转换原理的源码了,限于本人目前技术能力欠缺,没有深入研究,有兴趣的可以研究一下.

原文地址:https://www.cnblogs.com/zhaoletian/p/12658605.html

时间: 2024-11-09 09:35:18

springboot项目接收json转对象,首字母大小写,个别参数获取不到解决方案的相关文章

【Spring学习笔记-MVC-6】SpringMVC 之@RequestBody 接收Json数组对象

作者:ssslinppp       1. 摘要 程序流程: 前台使用ajax技术,传递json字符串到后台: 后台使用Spring MVC注解@RequestBody 接受前台传递的json字符串,并返回新的json字符串到前台: 前台接受后台传递过来的json数据,并显示. 2. 前台界面和js <%@ page language="java" pageEncoding="UTF-8"%> <% String path = request.ge

[Go语言]从Docker源码学习Go——init()方法和identifier首字母大小写区分

init()方法 如果想在一个go文件里,进行一些初始化的工作,可以把代码放到init()方法中. init()方法先被执行. func init() { // initialization of package } 注意:它是没有输入参数和返回参数的. identifier首字母大小写区分 当identifier(比如constant,variable,type,function,struct field,...)的命名首字母是大写的话,那表示这个identifier在包外是可以见的: 类似p

Java c# 跨语言Json反序列化首字母大小写问题

C#标准是首字母大写,Java规范是首字母小写,在序列化成Json之后,反序列化会出现反序列化失败的问题.. 从C#反序列化成JavaBean的时候通过如下注解可以直接解决该问题 @JsonNaming(value = PropertyNamingStrategy.UpperCamelCaseStrategy.class) 将该注解放到对应的class上,即可从大写首字母的Json串,反序列化成JavaBean. 原文地址:https://www.cnblogs.com/eviltuzki/p/

ASP.NET Core中返回 json 数据首字母大小写问题

asp.net core  默认输出的json数据首字母会改成小写,考虑可能是为了前端js的书写习惯,毕竟js 操作大小写敏感. 在Startup类的ConfigureServices()方法中进行配置,DefaultContractResolver() 原样输出,返回的 json 与后台定义一致 // This method gets called by the runtime. Use this method to add services to the container. public

FastJson 输出值 首字母大小写问题

解决方案: 1. 如果你的项目由多个模块且为分布式部署, 则可考虑使用设置System.property 2. 一般只是极少数的代码出现此情况, 那么建议直接在你的单例Service初始化时, 在静态块中直接改变TypeUtils的变量值, 如果用Spring的话可以使用InitializingBean进行处理 TypeUtils.compatibleWithJavaBean = true; 3. 此变量是public的注意要在一个地方进行改动, 避免线程安全问题 项目组使用FastJson,

el表达式的首字母大小写问题

EL表达式获取对象属性的原理是这样的: 以表达式${user.name}为例 EL表达式会根据name去User类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀,一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值. 所以,想要通过EL表达式获取对象属性的值,那么这个属性就必须有与之对应的get方法. 所以这中间不关私有属性的事,调用的是私有属性的get/set方法.如果你不写get/set方法,那EL表达式就拿不到值了.set方法是给你后

字符串整体大小写转换,首字母大小写

最近用到了首字母大写的功能,一般的思路是采用charAt(0)结合Character的toUpperCase方法转换,最后再拼成一个字符串的方式来实现 日前看到一个大神的代码,觉得效率比较高,有兴趣的朋友可以看一下 代码如下: /** * 首字母大写转换 * @param str 源字符串,首字母不支持中文 * @return */ public static String firstCharUpper(String str){ if(str!=null&Character.isLowerCas

Newtonsoft.Json 序列化小写首字母

//json对象命名小驼峰式转换var json = JsonConvert.SerializeObject(newAccount, Formatting.Indented, new JsonSerializerSettings{ ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()}); Account newAccount2 = JsonConvert.Des

SpringMVC @RequestBody 接收Json数组对象

<script type="text/javascript"> $(document).ready(function(){ $.ajax({ type:'POST', url:'<%=path%>/user/ceshi.do', dataType:"json", contentType:"application/json", data:JSON.stringify([{id:"1",name:"