我的 Quarkus 应用程序有一个类,如下所示:
package org.acme;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public String hello(){
return "Hello from Quarkus REST";
}
}
预期的回应是:
200 OK HTTP/1.1
Content-Type: application/json
"Hello from Quarkus REST"
相反,它返回:
200 OK HTTP/1.1
Content-Type: application/json
Hello from Quarkus REST
JSON 无法解析,因为它因缺少引号而无效。
知道为什么 Jackson 没有将我的
String
序列化为 JSON 吗?
这看起来很奇怪,因为
Content-Type
标头仍然指示响应是 JSON。
我在 Quarkus 网站上找不到任何记录此行为的内容。
您在这里返回
String
并期望“双引号”超出了序列化器的 json 功能。因为该代码并没有真正进行序列化,所以如果您返回一个对象,您将在 var 值和名称周围得到双引号。示例此处。
对于您的情况,您需要按如下方式返回。
@Produces(MediaType.APPLICATION_JSON)
public String hello(){
return "\"Hello from Quarkus REST\"";
}