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

Node.js使用Request发请求时读取JSON属性返回undefined问题

问题根因
  • request库默认返回的响应body为字符串类型,即使内容符合JSON格式,也不会自动转换为JavaScript对象,直接通过.操作符访问不存在的属性自然返回undefined。
  • 之前尝试JSON.parse不生效,大概率是返回的body首尾存在换行、空格等不可见字符,导致解析失败。

你看到console.log输出的{"status":1,"request":"67055353796"}是字符串的内容,和JS对象的打印结果视觉上高度相似,很容易误判为已经是对象类型,可以加一行console.log(typeof body)验证,输出为string即可确认。

修复方案

两种方案任选其一即可:

方案1:手动解析JSON

对body先去除首尾空白字符再做JSON解析,同时增加异常捕获避免解析出错导致程序崩溃:

request.post({url:`http://2captcha.com/in.php?key=${key}&method=${service}&sitekey=${sitekey}&pageurl=${pageurl}&json=${json}`}, function(error, response, body){
    if (response.statusCode == 200) {
        console.log(body);
        let bodyObj;
        try {
            // 先trim掉首尾空白字符再解析
            bodyObj = JSON.parse(body.trim());
        } catch (err) {
            console.error('JSON解析失败:', err);
            return;
        }
        console.log(bodyObj.status);
        console.log(bodyObj.request);
    }
})

方案2:开启request自动解析配置

在请求配置项中添加json: true,request会自动识别JSON响应并转换为JS对象,无需手动解析:

request.post({
  url:`http://2captcha.com/in.php?key=${key}&method=${service}&sitekey=${sitekey}&pageurl=${pageurl}&json=${json}`,
  // 开启自动解析JSON
  json: true
}, function(error, response, body){
    if (response.statusCode == 200) {
        console.log(body);
        console.log(body.status);
        console.log(body.request);
    }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 00:06:03