application/json 服务器收到的是字符串,还是json对象?

在 HTTP POST 请求中,服务器底层收到的请求体(body)始终是字节流(bytes)或字符串(string),即使客户端发送的是 JSON 数据,也不会直接收到一个"JSON 对象"。

为什么是字符串?

  • HTTP 协议传输的数据是纯文本或二进制流。
  • 当客户端发送 JSON 时,通常会:
    • 将 JavaScript 对象序列化为 JSON 字符串 (例如使用 JSON.stringify())。
    • 设置请求头 Content-Type: application/json
    • 将这个 JSON 字符串放入请求体中发送。
  • 服务器收到后,请求体就是一个 JSON 格式的字符串 (如 {"name": "test", "age": 30})。

服务器如何处理成 JSON 对象?

大多数现代 Web 框架会根据 Content-Type 自动解析:

  • Node.js + Express :使用 express.json() 中间件(或旧版的 body-parser)后,req.body 会直接是解析后的对象 (如 { name: 'test', age: 30 })。
  • Python + Flask :使用 request.get_json()request.json,如果 Content-Type 是 application/json,会返回解析后的字典对象 ;否则可以用 request.data 获取原始字符串/字节。
  • Java/Spring、PHP 等:类似,有内置或中间件自动解析成对象/Map。

如果没有正确设置 Content-Type: application/json,或框架没有启用解析中间件,服务器就只能拿到原始字符串,需要手动用 JSON.parse()(JS)或对应库解析。

总结

  • 原始收到:一定是字符串(或字节)。
  • 框架处理后:通常直接可用为 JSON 对象(更方便开发)。
  • 如果你自己写底层服务器(如纯 Node.js http 模块),就需要手动读取流并解析字符串。

如果你在具体框架中遇到问题(如收不到对象),检查请求头的 Content-Type 和框架的 body 解析配置即可。

相关推荐
Kk.08028 分钟前
Linux(九)fork复制进程与写时拷贝技术
linux·运维·服务器
齐齐大魔王24 分钟前
linux-进程详解
linux·运维·服务器
web3.088899925 分钟前
淘宝、京东、1688 拍立淘图搜 API 均返回 JSON 格式
python·json
應呈29 分钟前
Bootloader与OTA学习记录
linux·运维·服务器
楼田莉子43 分钟前
同步/异步日志系统:工具类以及日志的简单模块
linux·服务器·数据结构·c++
skywalk81631 小时前
使用官方提供的 bump-pydantic 工具 来自动化部分迁移pydantic代码
运维·自动化
杜子不疼.1 小时前
浏览器秒连服务器!WebSSH 实战体验,远程运维再也不折腾
运维·服务器·人工智能
她说彩礼65万1 小时前
C语言 整形提升及算数转换
linux·服务器·c语言
loockluo1 小时前
NFS网络存储部署与性能优化实战:家用服务器的学习与实践
服务器·网络·性能优化
RenPenry1 小时前
2026 在Linux上搭建CS2插件服务器
linux·运维·服务器·cs2·debian13