Express服务器无法正确读取Java发送的JSON请求体
问题分析与解决
问题现象
Java程序向Express服务器发送JSON数据,返回200响应,但Node.js端打印req.body时,name字段正常显示,blocks数组却只显示多个[Object],无法查看数组内的具体对象内容。
原因排查
- Java发送端:
- 生成的JSON经验证格式正确,Jackson库的序列化逻辑无问题。
- Java代码已正确设置
Content-Type: application/json请求头,且以UTF-8编码写入请求体,数据传输环节无异常。
- Express接收端:
- 已启用
express.json()中间件,name字段能正常读取说明JSON解析逻辑有效。 - 问题本质是Node.js的
console.log默认行为:打印嵌套对象时,会将内层对象简化显示为[Object],并非数据未被正确解析。
- 已启用
解决方案
在Express的POST路由处理函数中,改用JSON.stringify打印完整的请求体结构,指定缩进参数可让输出更易读:
const express = require('express') const app = express() app.use(express.json()); const port = 80 app.post('/', (req, res) => { // 展开所有嵌套对象,格式化输出 console.log(JSON.stringify(req.body, null, 2)); res.send('Data received'); });
可选验证
若需快速确认blocks数组的元素数量,可单独打印数组长度:
console.log('blocks数组长度:', req.body[0].blocks.length); // 预期输出10
内容的提问来源于stack exchange,提问作者grizzo
相关产品推荐
相关产品推荐

