You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Quarkus.io与rest-client-reactive-json反序列化失败问题

问题排查与解决思路

1. 实体类拼写错误

你的代码里存在明显的拼写错误,这是反序列化失败的核心原因之一:

  • 包装类ExtentsionWrapper的类名拼写错误,应为ExtensionWrapper
  • 包装类中字段extentions拼写错误,应为extensions
  • 字段类型List<Extention>中的类名拼写错误,正确类名是Extension

修正后的实体类代码:

public class Extension {
    public String id;
    public List<String> keywords;
}

// 修正后的包装类
public class ExtensionWrapper{
    List<Extension> extensions;
}

2. 字段访问权限与序列化规则问题

Jackson默认需要字段具备可访问性,虽然Extension的字段是public,但ExtensionWrapper中的extensions字段是包私有(无访问修饰符),Jackson可能无法正常读取或写入该字段。

推荐两种解决方式:

  • 给所有字段添加Getter/Setter方法
  • 引入Lombok简化代码,添加@Data注解自动生成Getter/Setter、构造方法等:

先在pom.xml中添加Lombok依赖:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <scope>provided</scope>
</dependency>

然后修改实体类:

@Data
public class Extension {
    private String id;
    private List<String> keywords;
}

@Data
public class ExtensionWrapper{
    private List<Extension> extensions;
}

3. 确认Rest Client接口返回类型匹配

确保你的Rest Client接口声明的返回类型是修正后的ExtensionWrapper,示例如下:

@RegisterRestClient(baseUri = "你的服务地址")
public interface ExtensionServiceClient {
    @GET
    @Path("/extensions")
    ExtensionWrapper getExtensions();
}

4. 校验响应JSON结构一致性

确认第三方服务返回的JSON结构与你的实体类字段完全匹配,比如正确的JSON格式应该是:

{
  "extensions": [
    {"id": "quarkus-rest-client-reactive", "keywords": ["rest", "client"]}
  ]
}

如果JSON中的字段名与实体类字段名不一致,需要用@JsonProperty注解做映射,例如:

@Data
public class ExtensionWrapper{
    @JsonProperty("extentions") // 匹配返回JSON中的字段名
    private List<Extension> extensions;
}

内容的提问来源于stack exchange,提问作者Abdullah Al Noman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 11:52:04