我正在创建一个 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 方法,但这只会让事情变得更加混乱。我不知道我还能做什么来摆脱这些“\”字符,我明白它们为什么在那里,但我不知道如何阻止它。如有任何帮助,我们将不胜感激。