小编kok*_*985的帖子

java - 一旦由 Lambda/Serverless 部署,就无法删除 JSON 中的“\”字符

我正在创建一个 API(用 Java 编写),我通过无服务器部署该 API,该端口连接到 AWS Lambda 函数。API 函数的所有方面都很棒,除了返回的请求在所有引号前面包含“\”字符这一事实之外。

为了正确地看待这一点,我有一个 person 类,其中包含名称(字符串)和心情(字符串)的实例变量。然后我的类使用此类来获取并创建一个 Person 对象,然后使用 Jackson 将其解析为 JSON 格式。这是返回到处理函数(对于 lambda)的内容,并显示为“对象主体”。

public class Person{
    String name;
    String mood;
    //getters and setters and constructor
}
Run Code Online (Sandbox Code Playgroud)

然后,稍后在不同的班级中会有一些东西,比如

Person person = new Person("bob", "good");
Run Code Online (Sandbox Code Playgroud)

它将被传递到我的方法中,该方法应该将内容转换为 JSON:

private String convStrToJson(Person person) throws JsonProcessingException {

    ObjectMapper mapper = new ObjectMapper();
    String json = mapper.writeValueAsString(person);
    return json;

}
Run Code Online (Sandbox Code Playgroud)

如果我要在输出中打印此内容,我会得到类似以下内容的信息:

{"name":"bob","mood":"good"}
Run Code Online (Sandbox Code Playgroud)

这就是我想要和期待的。但是,当通过 GET 请求部署和调用时,结果是:

"{\"name\":\"bob\",\"mood\":\"good\"}"
Run Code Online (Sandbox Code Playgroud)

我尝试了几种策略,包括添加解析方法,例如:

json = json.replace("\"", "");
Run Code Online (Sandbox Code Playgroud)

这会从两个输出中完全删除引号,或者:

json = json.replace("\\","");
Run Code Online (Sandbox Code Playgroud)

这根本没有任何影响。我还尝试了这两种方法作为 ReplaceAll 方法,但这只会让事情变得更加混乱。我不知道我还能做什么来摆脱这些“\”字符,我明白它们为什么在那里,但我不知道如何阻止它。如有任何帮助,我们将不胜感激。

java lambda json amazon-web-services serverless

4
推荐指数
1
解决办法
2236
查看次数

标签 统计

amazon-web-services ×1

java ×1

json ×1

lambda ×1

serverless ×1