zoukankan      html  css  js  c++  java
  • 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);
    

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

  • 相关阅读:
    hiho一下121周 后缀数组二·重复旋律2
    codeforces 381 D Alyona and a tree(倍增)(前缀数组)
    hiho一下120周 后缀数组一·重复旋律
    POJ 2893 M × N Puzzle(树状数组求逆序对)
    Java高并发-无锁
    Java高并发-Java内存模型和线程安全
    Linux用户权限集中管理方案
    CentOS下sudo的使用和sudoers配置
    Java高并发-多线程基础
    Java高并发-概念
  • 原文地址:https://www.cnblogs.com/shenyanrushang/p/10852468.html
Copyright © 2011-2022 走看看