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

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

  • 相关阅读:
    php 替换二维数组的 key
    全选功能
    向数组中添加含有下标的元素
    判断一个进程是否在执行中
    初识 Nginx
    原生JS中DOM节点相关API合集
    工作中经常用到github上优秀、实用、轻量级、无依赖的插件和库
    Unsupported major.minor version ... JDK具体对应版本
    Scala常用命令
    使用nexus搭建maven私服教程详解
  • 原文地址:https://www.cnblogs.com/shenyanrushang/p/10852468.html
Copyright © 2020-2023  润新知