Quarkus 无法将简单字符串序列化为 JSON

问题描述 投票:0回答:1

我的 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 网站上找不到任何记录此行为的内容。

jackson jax-rs quarkus
1个回答
0
投票

您在这里返回

String
并期望“双引号”超出了序列化器的 json 功能。因为该代码并没有真正进行序列化,所以如果您返回一个对象,您将在 var 值和名称周围得到双引号。示例此处

对于您的情况,您需要按如下方式返回。

    @Produces(MediaType.APPLICATION_JSON)
    public String hello(){
        return "\"Hello from Quarkus REST\"";
    }

还有其他方法 https://stackoverflow.com/a/62584128/175554

© www.soinside.com 2019 - 2024. All rights reserved.