提问者:小点点

Spring WebClient将响应正文中不为null的某些字段设置为null


我有域类

import org.springframework.data.mongodb.core.mapping.Document;

import lombok.Data;

@Data
@Document
public class Bar {

    @Id
    private String id;


    private List<String> owners;
    private List<String> cFeatures; 

    private Integer age;
    private String color;

}

我正在使用以下代码调用API以获取Bar对象中的数据:

import org.springframework.web.reactive.function.client.WebClient;
    Mono<Bar> prop = webClient.get()
                    .uri("/bars/"+id)
                    .header("Authorization", "Bearer " + access_token)
                    .accept(MediaType.APPLICATION_JSON)
                    .retrieve()
                    .bodyToMono(Bar.class).log("find by id")

问题是,即使原始JSON响应具有:“cFeature”:[“自定义功能一”、“”],我也会将cFeature设置为空

但是所有者列表得到正确的值,即使所有者列表中也有空字符串值(不确定这是否是此错误的来源)

因此,条形图对象具有:cFeatures:null

这是Webclient中的错误还是我遗漏了什么?我花了一整天的时间在这上面,但还没有修复。


共2个答案

匿名用户

问题出在龙目岛。Lombok正在生成setter方法:

设置特征

但杰克逊期望塞特:

未找到的setcFeatures,因此cFeatures的值为null。

匿名用户

如果您确保您的POJO具有正确的注释样式,这会很有帮助。例如,使用jsonscheme2pojo。org,选择“Json”作为源代码类型,选择“Jackson 2.x”作为注释样式。这将使问题消失。起初,我也遇到了同样的问题,因为我使用了一个带注释的Gson。