Axios请求使用params参数导致后端获取数据嵌套

embedded/2024/9/23 12:51:58/

问题重述:

首先看前端的axios请求这里我使用params参数将data数据传给后端

 let data = JSON.stringify(this.posts);axios.post("/blog_war_exploded/insertPost", {params: {data: data}}).then((res) => {if (res.data == "success") {alert("发布成功")} else alert("发布失败")});

后端我接受post请求的参数就需要使用流来读取这个我写的没有问题。但是发现对象可以打印出来,但是通过对象.属性名无法获取数据。

打印结果如下:(获取到的对象data被params包起来了导致无法获取title属性值)


 解决方案有两种:

1:改写axios请求格式,不使用params参数,直接用axios.post("url",data)的方式传递参数

2:改写后端,先从 jsonObject 中获取 params 对象,再从 params 对象中解析出 data 字符串,再转换为 JSONObject,然后dataObject 中提取需要的字段。

java">@WebServlet("/insertPost")
public class insertPost extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("UTF-8");resp.setCharacterEncoding("UTF-8");resp.setContentType("text/html;charset=UTF-8");JSONObject jsonObject = acceptPost(req);String title = jsonObject.getString("title");//获取其他参数、、、下面我将获取前端的对象打印了出来System.out.println("jsonObject = " + jsonObject);System.out.println("jsonObject.getString(\"title\") = " + jsonObject.getString("title"));GetMapper getMapper = new GetMapper();Integer posts = getMapper.insertPost(new posts(title, author, category, label, date, status, content));PrintWriter out = resp.getWriter();if (posts==1){out.write("success");}}/*** 接收并解析前端发送的POST请求的JSON数据** @param req HttpServletRequest对象,用于获取请求数据* @return 解析后的JSONObject对象,包含前端发送的参数*/public static JSONObject acceptPost(HttpServletRequest req) {try {// 创建BufferedReader对象,从请求输入流中读取数据BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(req.getInputStream(), "utf-8"));String data; // 用于临时存储每一行读取的数据StringBuilder stringBuilder = new StringBuilder(); // 用于存储整个请求的内容// 循环读取请求输入流中的数据,直到读完为止while ((data = bufferedReader.readLine()) != null) {stringBuilder.append(data);}// 将读取到的JSON字符串转换为JSONObject对象JSONObject jsonObject = JSONObject.parseObject(stringBuilder.toString());// 返回转换后的JSONObject对象return jsonObject;} catch (IOException e) {// 捕获IO异常并抛出运行时异常throw new RuntimeException(e);}}
}


http://www.ppmy.cn/embedded/97900.html

相关文章

ElasticSearch 高级查询语法Query DSL实战

文章目录 1.ES高级查询Query DSL1.1 match_all1.2 术语级别查询1.3 全文检索1.4 bool query布尔查询1.5 highlight高亮 2. ES 深度分页问题及针对不同需求下的解决方案2.1 什么是深度分页2.2 深度分页会带来什么问题2.3 深度分页问题的常见解决方案2.4 总结 1.ES高级查询Query …

2025年单片机毕业设计选题物联网计算机电气电子通信类

当然,以下是基于物联网技术设计的20个单片机类题目,旨在考察学生在物联网环境下单片机应用、系统设计、数据传输与处理等方面的能力: 基于物联网的智能家居温度湿度控制系统设计:利用单片机和传感器实现室内环境的温湿度监测&…

【layUI】只能选某个特定区间的日历

要实现的功能如下&#xff1a;业务要求让日历只有近3天可选&#xff0c;其它部分变灰且不可选。 代码实现 在html中加入如下代码&#xff1a; <label class"layui-form-label" style"">日期&#xff1a; </label> <div class"layu…

Vue+SortableJs实现拖拽排序

需求说明 需求是需要首列固定、除首尾列外可进行拖动排序并保存数据 SortableJs中文地址 SortableJs 实现说明 针对首尾列固定SortableJs提供了一个配置&#xff0c;该配置虽然可实现首尾列不可拖动&#xff0c;但是在拖动其他元素到首尾列时位置仍被调换&#xff0c;所以…

网络设备net_device数据结构之ifindex

近期发现网卡index值发生改变&#xff0c;导致上层dhcp失败&#xff08;这里dhcp如果动态获取网卡index其实也无问题&#xff09;&#xff0c;这里主要来了解下网卡index值的产生原理&#xff0c;如何固定&#xff0c;如何动态注册&#xff0c;以及各自优缺点 网络设备&#x…

若依小程序使用及遇到的问题

1、首先去官网拉取小程序代码&#xff0c;从HBuildx运行到小程序 这个时候项目起来了&#xff0c;但是小程序发生了报错&#xff1b; 解决方法 在 project.config.json 新增指定 app.json 路径 ★一定要有 unpackage文件夹 如果没有的需要到HBuilder X 编译一下&#xff0c;编…

智能家居之自动加热与童锁饮水机构建思路

自动加热饮水机构建思路 引言 我们做饮水机, 并不做饮水机滤芯, 也不做饮水机的水龙头, 而是做饮水机的逻辑交互功能。 因为饮水机涉及到的人机交互可能比较多&#xff0c; 适合我们进行研究思考&#xff0c; 为其他项目的开发提供经验。 涉及到的人机交互&#xff1a; 水温控…

数据导入导出(EasyExcel)框架入门指南

写在前面 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 文章目录 EasyExcel 框架概述依赖APIExcel 实体类注解写 Excel概念介绍写 Excel 通用参数WriteWorkbookWriteSheetWriteTable 代码…