AWS Lambda Java返回带斜杠的字符串

时间:2017-12-06 14:11:09

标签: java json aws-lambda

我在

之后从Lambda返回字符串时遇到问题
JSONObject.toString

作为回报,我有

"{\"Key2\":\"Value2\",\"Key1\":\"Value1\"}" 

而不是

"{"Key2":"Value2","Key1":"Value1"}"

有人可以解释如何排除这些斜杠吗?

3 个答案:

答案 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) {
...
}