Quarkus Rest Client序列化:如何替代@JsonIgnore忽略字段?
在Quarkus Rest Client请求体中忽略字段的解决方案
你的判断是对的——因为项目依赖了io.quarkus:quarkus-resteasy-reactive-jsonb:jar:2.7.5.Final,Quarkus会采用JSON-B(JSR 367)规范的序列化实现处理请求/响应,而非Jackson,所以Jackson的@JsonIgnore、@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)这类注解自然不会生效。
针对这个场景,你可以使用JSON-B对应的注解来实现字段忽略:
完全忽略字段(请求体不包含,响应体也不解析该字段)
在需要忽略的字段上添加javax.json.bind.annotation.JsonbTransient注解即可:public class RequestPayload { // 正常参与序列化/反序列化的字段 private String userName; // 被忽略的字段,不会出现在请求体中,也不会从响应体解析 @JsonbTransient private String sensitiveInfo; // getter、setter方法 }仅在请求体中忽略(响应体仍可解析该字段)
如果需要该字段能在接收响应时被解析,但发送请求时不包含在请求体里,可以使用@JsonbProperty并指定访问类型为READ_ONLY:public class RequestPayload { private String userName; // 仅在反序列化(读取响应)时生效,序列化(生成请求体)时被忽略 @JsonbProperty(access = JsonbProperty.Access.READ_ONLY) private String responseOnlyField; // getter、setter方法 }
内容的提问来源于stack exchange,提问作者WesternGun
相关产品推荐
相关产品推荐

