我在
之后从Lambda返回字符串时遇到问题JSONObject.toString
作为回报,我有
"{\"Key2\":\"Value2\",\"Key1\":\"Value1\"}"
而不是
"{"Key2":"Value2","Key1":"Value1"}"
有人可以解释如何排除这些斜杠吗?
答案 0 :(得分:1)
如果你真的需要删除它们......
yourstring.replace("\\", "");
然而,那些"愚蠢的斜线"如果您将响应视为字符串,则它们是必需的,因为它们会转义您的"
字符。具体来说,没有这些,您的编译器将表现如下:
"{" // is a string
Key2 // Not known by Java
":" // is a string
Value2 // Not known by Java
"," // is a string
Key1 // Not known by Java
":" // is a string
Value1 // Not known by Java
"}" // is a string
通过使用反斜杠转义"
字符,您提到编译器不应将其视为字符串的结尾或开头。因此,要求它只考虑第一个和最后一个"
。
答案 1 :(得分:1)
之前我在JavaScript中做过类似的事情。如果您根本没有对该对象进行序列化,那么AWS API Gateway应该为您处理它。如果您的Lambda返回如下内容:
// ...
context.done(null, {
id: i.id,
last_name: i.last_name,
gender: i.gender
});
...那么您的API响应将如下所示:
{
"id": 1,
"first_name": "Chris",
"gender": "male"
}
答案 2 :(得分:0)
不要序列化项目中的对象。 AWS Lambda将按照here的要求为您处理对象序列化。只需返回一个对象!
例如
//return type is an object not a string
public SomeObject handleRequest(Object input, Context context) {
...
}