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

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

上一篇:openflow tutorial 开始openflow的学习(一)


下一篇:Azure Tips 第一期: Azure 中的安全监视工具,数据存储, 动态数据屏蔽以及资源部署