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

大功告成,大体上解决方法就是上面的凉行代码,当然你也可以选择别的方式,毕竟能解决问题的方式都好

posted @ 2019-04-16 20:53  邪爵神殇  阅读(2500)  评论(0编辑  收藏  举报