我正在将json对象/字符串(都尝试过)放入SQS队列中-我试图将其作为有效负载发布到lambda函数中,该函数在SQS中包含新项时触发。 / p>
我的问题是json出现在另一端,并在每个“我有json对象或字符串”中添加了额外的\(反斜杠)。
这是一个示例,说明我如何将另一部分json作为普通字符串(这是要求)添加到SQS:
"{\"properties\":{\"colorIconValue\":\"Other\",\"description\":\"According to media reports on Saturday, 26 January,
当文本进入队列时看起来像这样:
{"properties": {"colorIconValue": "Other","description": "International media r
用于将json添加到队列中的代码来自AWS蓝图:
console.log("plain text" + incident_report);
var params = {
MessageBody: incident_report,
QueueUrl: QUEUE_URL
};
//write to SQS
sqs.sendMessage(params, function(err,data){
if(err) {
console.log('error:',"Fail Send Message" + err);
context.done('error', "ERROR Put SQS"); // ERROR with message
}else{
//console.log('data:',data.MessageId);
context.done(null,''); // SUCCESS
}
});
我尝试将有效负载添加为JSON对象,并将其添加为JSON.stringfy(),但是得到的结果是相同的...以后无法在(http post)上发布。
答案 0 :(得分:1)
对收到的SQS消息使用JSON.parse()
。例如:
sqs.receiveMessage(params, function(err, data) {
if (err) throw err;
// Parse your data to received string to json
const jsonObject = JSON.parse(data.Records[0].body);
});
这应该在jsonObject
中保存一个与您想要的对象类似的对象。
答案 1 :(得分:0)
这是直接来自SQS docs的示例。
创建一个JSON对象,其中包含消息所需的参数,包括要将此消息发送到的队列的URL。在此示例中,该消息提供了小说畅销书列表中的一本书的详细信息,包括书名,作者和列表中的星期数。
// Load the AWS SDK for Node.js
var AWS = require('aws-sdk');
// Set the region
AWS.config.update({region: 'REGION'});
// Create an SQS service object
var sqs = new AWS.SQS({apiVersion: '2012-11-05'});
var params = {
DelaySeconds: 10,
MessageAttributes: {
"Title": {
DataType: "String",
StringValue: "The Whistler"
},
"Author": {
DataType: "String",
StringValue: "John Grisham"
},
"WeeksOn": {
DataType: "Number",
StringValue: "6"
}
},
MessageBody: "Information about current NY Times fiction bestseller for week of 12/11/2016.",
QueueUrl: "SQS_QUEUE_URL"
};
sqs.sendMessage(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data.MessageId);
}
});