天天看點

Java如何接收前端傳來的多層嵌套的複雜json串

想看問題直接解決方式,直接拉到博文底部.

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);
           

大功告成,大體上解決方法就是上面的涼行代碼,當然你也可以選擇别的方式,畢竟能解決問題的方式都好