位置: 编程技术 - 正文

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

编辑:rootadmin

推荐整理分享SpringMVC restful 注解之@RequestBody进行json与object转换,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

由于快过年的原因,项目组没有太多任务,闲来无事研究了一下spring中restful调用。发现spring竟然已经强大到如此境界,程序员已经不需要在关心在写接口的过程中数据的转换以及调用,只需要专注业务。下面我总结一下步骤及其在研究过程的遇到的问题。

步骤:

1、git clone 从spring官网上下载了源码

2、进行maven编译(gradle也行)

3、运行、访问 4、运行结果能把对象转换为json对象返回给页面

这时我就在思考怎样能让请求的数据自动转换为java对象呢,通过google,发现其实spring已经提供了HttpMessageConverter转换器,而且默认情况下是加载了 MappingJackson2HttpMessageConverter(json ~object转换的类)。只需要配置@RequestBody Greeting gree 即可使用。

controller层代码如下:

这时候我通过谷歌的插件(postman)进行调用,死活调用不成功!

分析问题及解决问题:

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

这时我感觉问题的原因可能出在如下几个方面:

1、spring默认没有加载MappingJackson2HttpMessageConverter(不知道具体加载方式)

2、MappingJackson2HttpMessageConverter加载后不能工作(不知道不工作原因)

其实最后面导致不工作的原因是太相信spring的源码(对象没有提供set方法导致),带着这两疑问在网上海量搜索者找不到对应结果。没有办法只能从根本上找到问题原因,看spring源代码。

针对第一个问题:

第一步:手动重写加载类型转换器

测试发现还是不能使用,这时就更不清楚原因了。只能看默认情况下spring是怎么加载类型转换器的。结果发现在WebMvcConfigurationSupport中这个方法addDefaultHttpMessageConverters(HttpMessageConverter这个关键字反射搜索到使用地方通过判断及其跟踪找到的)中如下代码:

已经加载了相应的默认转换器。断点调试说明默认配置是没有问题的。

只能说明是第二个问题导致的,但是不知道为什么导致这个问题(json数据问题,还是其他问题),在不知道问题的情况下,只能看request请求过来,转换器是怎么工作的。因为本人对spring不是特别了解,所以不知其原理。在这种情况下还是只能根据(HttpMessageConverter)关键类找到相应使用地方。以经验进行判断和调试。发现在AbstractMessageConverterMethodArgumentResolver中的readWithMessageConverters方法是request请求过来进行类型转换的处理方法。

这时候发现其实已经根据HttpMessageConverter的canRead方法已经找到了对应的类型消息转换器MappingJackson2HttpMessageConverter,而且已经开始进行转换了,只是抛出了运行时异常。因为异常没有在控制台输出。我通过断点调试发现MappingJackson2HttpMessageConverter的readJavaType方法抛出运行时异常,通过源代码发现底层是用的jackson的objectMapper进行操作的,代码如下:

如是我就把代码单独拿出来在main方法里面运行,还是不行,这时我就好定位问题了。要不是类型错误,要不是输入数据错误。仔细检查发现json数据没有问题,用jsonobject也能进行转换。这时只能判断是传入的javaType有问题导致的。如是我打开发现对象(Greeting)没有set方法,我想是不是因为此jakson没法工作呢(原理不清楚)。如是乎我给此对象提供了set方法,再运行可以了。绕了一圈终于把问题解决了,但是通过这个问题让我更加清楚了spring的restful的工作机制。

日常收集整理的JavaScript常用函数方法 函数就是包裹在花括号中的代码块,前面使用了关键词function:functionfunctionname(){这里是要执行的代码}当调用该函数时,会执行函数内的代码。可以在某

Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一) 在前端这个坑里摸爬滚打已经一年多了,终于下定决心写下自己第一篇博客(虽然内容原创居少,算是个整合内容),开始使用express的原因是因为自己

在 Express 中使用模板引擎 需要在应用中进行如下设置才能让Express渲染模板文件:views,放模板文件的目录,比如:app.set('views','./views')viewengine,模板引擎,比如:app.set('viewengine','ja

标签: SpringMVC restful 注解之@RequestBody进行json与object转换

本文链接地址:https://www.jiuchutong.com/biancheng/387188.html 转载请保留说明!

上一篇:Spring mvc 接收json对象(springmvc接收json需要配)

下一篇:日常收集整理的JavaScript常用函数方法(收集和整理的区别)

  • 工会经费按什么比例交
  • 债务重组无形资产的评估费
  • 成本结转不规范会受到什么罚款
  • 总公司如何分配股份
  • 本期缴纳上期应缴税额
  • 加计抵减其他收益汇算清缴填哪里
  • 房屋及建筑物属于什么会计要素
  • 固定资产原值减少账务处理
  • 外币账户间互转流程
  • 我的初级备考经历怎么写
  • 劳务费的专用发票有哪些
  • 确认社保局工伤赔款会计分录
  • 委托代销收取手续费账务处理
  • 非正常原因导致的存货盘亏或毁损非正常原因是哪些
  • 应税服务计入什么科目
  • 所得税多交但又不想去税务局退税怎样做账?
  • 简易征收税率都包括什么
  • 物流公司零税率发票是怎么回事?
  • 劳务派遣企业差额扣除占比过高怎么办
  • 不同类型商业分布的特征
  • 代付给其他供应商货物尾款怎么记账
  • 微软官方教你如何验机
  • 定额发票可以抵进项税吗
  • 生产车间报销费用
  • 支付公司保洁费未开发票
  • 事业单位专项资金包括哪些内容
  • 新手最适合用哪一款
  • php如何提高程序运行效率
  • Yii使用migrate命令执行sql语句的方法
  • 信托融资放在哪个科目
  • 固定资产清理如何计算增值税
  • consul框架
  • php图片上传代码详解
  • 市盈率和市净率多少比较合适
  • php简单检测网址是什么
  • 增值税专用发票和普通发票的区别
  • 茶叶开增值税专用发票,不在申报系统的农副产品类
  • 小规模纳税人核定征收标准
  • 个税赡养老人专项扣除 多人
  • 为什么很多公司选择股票上市
  • 工资薪金与劳务报酬的区别有哪些
  • u8已经记账的凭证怎么修改
  • 不认证的发票可以作废吗
  • 同时运行多个MySQL服务器的方法
  • 收据大写后面的空格怎么填
  • 农产品进项核定扣除成本法
  • 企业接受捐赠增值税处理
  • 什么是一般公共预算财政拨款
  • 实习生个人所得税需要申报吗?
  • 劳动仲裁赔偿款会计分录
  • 坏账准备的账务处理T型
  • 跆拳道馆薪酬详细方案
  • 研发部门的房租可以资本化
  • 技术报酬金是什么意思
  • 进项发票认证后暂不抵扣
  • 银行汇票转入银行分录
  • 交了社保里面的钱去哪里了
  • 专款支出和事业支出
  • 应交增值税结转凭证
  • 工程增值税抵扣比例
  • 融资租入固定资产属于本企业资产
  • 存货周转率 高
  • sqlserver中通过osql/ocmd批处理批量执行sql文件的方法
  • win8.1资源管理器频繁假死
  • linux认证失败的原因
  • 电脑开机后显示xp界面后一直是黑屏状态
  • libegl.dll病毒
  • win10怎样永久激活
  • win7系统玩暗黑2怎样全屏
  • win8删文件需要权限怎么弄
  • linux防病毒措施
  • 麒麟linux系统怎么安装软件
  • [置顶]公主大人接下来是拷问时间31
  • unity例子
  • javascript entries
  • python 入门
  • node的理解
  • js 原型方法
  • js定义数据类型
  • 天津生育津贴如何查询申请进度
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设