【问题标题】:"[object object] string" instead of just JSON“[object object] string” 而不仅仅是 JSON
【发布时间】:2021-12-31 13:23:20
【问题描述】:

我需要使用带有 Node.js 的 AWS lambda 返回 JSON 对象而不是字符串。

任何帮助或建议将不胜感激。

这是返回的内容:

"[object Object]{\"meta\":{\"request\":\"AP-ITL\",\"status\":\"success\",\"message\":\"OK\",\"code\":200},\"data\":{...}

我也试过 JSON.parse() JSON.parse(response) 返回: "Unexpected token o in JSON at position 1"

这是我的代码:

const https = require('https');

exports.handler = (event,context,callback) => {
    let body = {}
    let input = event
    
    let authBody = JSON.stringify({"email": event.username,
          "password": event.password,
      });
      console.log(authBody)
      
console.log(typeof(authBody))
console.log(authBody)
    var details = {
        host: 'host', 
        path: 'endpoint',
        method: 'POST',
        headers: {
        'Content-Type': 'application/json',
    },
    };

    let reqPost =  https.request(details, function(res) {
        console.log("statusCode: ", res.statusCode);
        res.on('data', function (chunk) {
            body += chunk;
        });
        
        res.on('end', function () {
        console.log(body)

           let response = {
                            input: input,
                            body        : body
                            };
           context.succeed(response);
        });
        res.on('error', function () {
          console.log("Result Error", JSON.stringify({body}));
          context.done(null, 'FAILURE');
        });
    });
    reqPost.write(authBody);
    reqPost.end();
};

【问题讨论】:

    标签: node.js json types aws-lambda


    【解决方案1】:

    好的,那么:

    let body = {}
    

    这将使用空对象初始化body。稍后,您会这样做:

    body += chunk;
    

    chunk是一个字符串,但body一开始不是,所以body需要变成一个字符串,这意味着调用它的toString()方法,对于这样的对象产生@987654328 @。这意味着响应的文本将始终以 this 作为前缀,这当然不是有效的 JSON。

    解决办法?用空字符串初始化body:

    let body = ""
    

    【讨论】:

      【解决方案2】:

      对于您提供的文本,您似乎将一些 JavaScript 对象连接到字符串的开头。在这种情况下,JSON.parse() 会返回错误,因为它被 [object Object] 混淆在应该是 JSON 格式的内容中(因此出现 Unexpected token 错误)。

      您应该尝试弄清楚连接到您的字符串的第一件事是什么。如果你不知道为什么会发生这种情况,hacky 的解决方案是从字符串中删除 {\"meta\": ... 标记之前的所有元素,但我不建议这样做。

      【讨论】:

        猜你喜欢
        • 2021-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-26
        • 1970-01-01
        • 1970-01-01
        • 2012-10-13
        相关资源
        最近更新 更多