想看問題直接解決方式,直接拉到博文底部.
Spring的controller在接收前端傳參的時候如果參數使用@RequestBody标注的時候
@RequestBody
則會把前端參數轉為JSON的形式,當然内部是怎麼實作的像我這種菜雞目前肯定是不懂的.
但是有的時候會遇到一種情況,比如說JSON嵌套的時候之前我想的是DTO中包含一個String類型的參數,因為Json不就相當于一個字元串嘛
整理了一下,前端傳來的參數這樣子
{
"Code": "001",
"state": 0,
"content": "{
"name": "小明",
"age": 18
}"
}
但是實際上面的JSON是一個錯誤的json,正常傳參的時候根本就不能把Json寫成下面的格式
{
"Code": "001",
"state": 0,
"content": {
"name": "小明",
"age": 18
}
}
正常的json格式應該是上面這個樣子的,但是這個時候我就比較迷惑了,既然不能接受字元串形式,這裡的參數該怎麼弄呢?
根據業務邏輯,這裡面可以在DTO,封裝一個需要的實體類,比如說可以放置一個User的參數
但是有的時候,我們會發現我們是根本不知道裡面實體類的代碼的,甚至說這個實體類裡面還會嵌套着更多的别的實體類
是以我選擇采用Object當參數
/**
* 資訊json串
*/
private Object content;
之後呢,在儲存資料的時候可以通過下面的代碼,将Json轉為String存入資料庫
Vo vo= new Vo();
JSONObject jsonObject = JSONObject.fromObject(applyRecordDto.getContent());
String s = jsonObject.toString();
vo.setContent(s);
大功告成,大體上解決方法就是上面的涼行代碼,當然你也可以選擇别的方式,畢竟能解決問題的方式都好