这里需要区分一个概念,Json对象和Json字符串的区别:https://blog.csdn.net/u010865136/article/details/78591765
一般前端向后端发送请求是通过axios,Ajax等,后端向前端发送数据,都是通过发送Json字符串到前端进行交互。
对于axios:
会自动将接收到的字符串转换成json对象。
对于Ajax:
在发送请求时可以通过设置contentType的值来告诉服务器内容编码类型。 参考这篇文章:https://blog.51cto.com/cnn237111/984466
1>Content-Type和MIME的概念:在把输出结果响应到浏览器上的时候,浏览器必须启动适当的应用程序来处理这个输出文档。这可以通过MIME来完成。在HTTP中,MIME类型被定义在Content-Type
response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。
2>dataType:
预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数.而后端就可以设置response.setContentType("text/html;charset=utf-8”);来设置向前端发送的数据格式,根据前面的介绍Content-Type里存放的就是MIME的类型
总之:
前端向后端发送数据时,每次都直接把对象转换成Json字符串的格式发送到后端,后端不使用框架的话用request.getParameter("name")来获取。使用框架的话,比如在SpringMvc中,加上@RequestBody 会自动将Json字符串映射到对象中,也能以键值对的形式映射到Map中