You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Express学习REST API时res.send()显示[object object]问题求助

Express返回对象显示[Object object]的解决办法

你遇到的问题核心是字符串拼接时对象的默认转换行为:当你在模板字符串里写${user}时,JavaScript会自动调用对象的toString()方法,而普通对象的toString()默认返回[Object object],所以页面才会显示这个内容——这和你配置的express.json()无关,那是用来解析请求体JSON的。

给你三种可行的解决方式:

1. 直接返回JSON响应(推荐)

如果是REST API场景,直接用Express提供的res.json()方法返回对象,它会自动把对象序列化为JSON,并设置正确的Content-Type响应头,前端可以直接解析使用:

router.get('/:id', (req, res) => {
    const user = users.find(elem => elem.id == req.params.id)
    console.log(user)
    res.json(user)
})

2. 手动将对象转为字符串拼接

如果需要把对象内容嵌入字符串返回,用JSON.stringify()把对象转成JSON字符串即可:

router.get('/:id', (req, res) => {
    const user = users.find(elem => elem.id == req.params.id)
    console.log(user)
    res.send(`GET user with id ${req.params.id} ${JSON.stringify(user)}`)
})

3. 提取对象属性单独展示

如果要返回可读的HTML内容,可以直接取出对象的属性拼接成页面内容:

router.get('/:id', (req, res) => {
    const user = users.find(elem => elem.id == req.params.id)
    console.log(user)
    res.send(`
        <div>
            <h3>User Detail</h3>
            <p>ID: ${user.id}</p>
            <p>Name: ${user.name}</p>
        </div>
    `)
})

额外提示:req.params.id是字符串类型,你的user.id是数字,用==能通过隐式转换匹配,但更严谨的写法是先把req.params.id转成数字再用全等匹配:

const user = users.find(elem => elem.id === Number(req.params.id))

内容的提问来源于stack exchange,提问作者RETOVSKEJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:50:26