我需要使用 AWS lambda 和 Node.js 回傳一個 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();
};
uj5u.com熱心網友回復:
可以,然后呢:
let body = {}
這body用一個空物件初始化。稍后,您會執行以下操作:
body = chunk;
chunk是一個字串,但一開始body不是,所以body需要變成一個字串,這意味著呼叫它的toString()方法,對于這樣的物件,它會產生[object Object]. 這意味著回應的文本最終總是以 this 為前綴,這當然不是有效的 JSON。
修復?body用空字串初始化:
let body = ""
uj5u.com熱心網友回復:
對于您提供的文本,您似乎將一些 JavaScript 物件連接到字串的開頭。在這種情況下,JSON.parse()回傳錯誤是因為它被[object Object]應該是 JSON 格式的內容的內部混淆(因此出現意外令牌錯誤)。
您應該嘗試弄清楚連接到您的字串的第一件事是什么。如果您不知道為什么會發生這種情況,那么 hacky 解決方案是{\"meta\": ...從字串中洗掉標記之前的所有元素,但這不是我推薦的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/363343.html
標籤:节点.js json 类型 aws-lambda
上一篇:遍歷鏈接物件
