Java如何接收前端传来的多层嵌套的复杂json串
想看問(wèn)題直接解決方式,直接拉到博文底部.
Spring的controller在接收前端傳參的時(shí)候如果參數(shù)使用@RequestBody標(biāo)注的時(shí)候
@RequestBody則會(huì)把前端參數(shù)轉(zhuǎn)為JSON的形式,當(dāng)然內(nèi)部是怎么實(shí)現(xiàn)的像我這種菜雞目前肯定是不懂的.
但是有的時(shí)候會(huì)遇到一種情況,比如說(shuō)JSON嵌套的時(shí)候之前我想的是DTO中包含一個(gè)String類型的參數(shù),因?yàn)镴son不就相當(dāng)于一個(gè)字符串嘛
整理了一下,前端傳來(lái)的參數(shù)這樣子
{"Code": "001","state": 0,"content": "{"name": "小明","age": 18}" }但是實(shí)際上面的JSON是一個(gè)錯(cuò)誤的json,正常傳參的時(shí)候根本就不能把Json寫成下面的格式
{"Code": "001","state": 0,"content": {"name": "小明","age": 18} }正常的json格式應(yīng)該是上面這個(gè)樣子的,但是這個(gè)時(shí)候我就比較迷惑了,既然不能接受字符串形式,這里的參數(shù)該怎么弄呢?
?
根據(jù)業(yè)務(wù)邏輯,這里面可以在DTO,封裝一個(gè)需要的實(shí)體類,比如說(shuō)可以放置一個(gè)User的參數(shù)
但是有的時(shí)候,我們會(huì)發(fā)現(xiàn)我們是根本不知道里面實(shí)體類的代碼的,甚至說(shuō)這個(gè)實(shí)體類里面還會(huì)嵌套著更多的別的實(shí)體類
?
所以我選擇采用Object當(dāng)參數(shù)
/*** 信息json串*/private Object content;之后呢,在保存數(shù)據(jù)的時(shí)候可以通過(guò)下面的代碼,將Json轉(zhuǎn)為String存入數(shù)據(jù)庫(kù)
Vo vo= new Vo();JSONObject jsonObject = JSONObject.fromObject(applyRecordDto.getContent());String s = jsonObject.toString();vo.setContent(s);大功告成,大體上解決方法就是上面的涼行代碼,當(dāng)然你也可以選擇別的方式,畢竟能解決問(wèn)題的方式都好
轉(zhuǎn)載于:https://www.cnblogs.com/shenyanrushang/p/10852468.html
總結(jié)
以上是生活随笔為你收集整理的Java如何接收前端传来的多层嵌套的复杂json串的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据挖掘-数据预处理的必要性及主要任务
- 下一篇: 九、Node.js中文乱码问题