当前位置: 首页 > 知识库问答 >
问题:

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

翟曦之
2023-03-14

我有域类

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个答案

江坚成
2023-03-14

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

颜熙云
2023-03-14

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

设置特征

但杰克逊期望塞特:

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

 类似资料:
  • 我使用一组文档来识别用户组。我的意图是只使用用户id填写文档id字段,而不在文档中包含其他无用字段。但在做了一些研究之后,显然不可能有空的文档。 所以,我的问题是如何将文档中的一个(虚拟)字段设置为null,根据留档,这应该是FiRecovery支持的。我正在Android和Web中研究这个问题,但我认为任何平台的代码都可以。 更新:我已经确认,在Web中简单地将null作为字段就可以了,然而,当

  • 编辑2: 似乎调用实际上是在取消数据库中的字段!但是,调用并没有像预期的那样用空字段刷新POJO。我在之后验证了lastName的为null,但是调用没有使该值为null。

  • 问题内容: 在golang中,有没有办法查看是否可以将解编入结构的json字段与设置为null的json字段区分开?因为两者都将struct中的值设置为nil,但是我需要知道字段是否以该字段开头,并查看是否有人将其设置为null。 VS 当解组为结构时,两个json均为零。任何有用的资源将不胜感激! 问题答案: 使用以“拖延”解组过程决定做某件事之前要确定原始字节: 参观游乐场https://pl

  • 我试图设置可变投掷SpEL在Spring启动应用程序: 应该来自应用程序-{profile}。财产。但是字段始终为空,即使已存在。 带有的代码可以正常工作,但包含空字符串。 我的问题是,如果使用SpEL的属性不存在,如何将null设置为variable。 upd:值来自特定于配置文件的属性文件

  • 问题内容: 假设我有一个映射中指定的字符串字段。如果我随后添加到映射,ElasticSearch会重复存储吗?我对字段的了解是,它们不是通过分析器运行的,索引 为 ,但是客户端可以对其进行匹配。因此,如果一个字段既是和,则可能导致ElasticSearch保留该字符串的两个副本。 我的问题: 如果将字符串字段同时存储为和,是否将重复存储该字符串? 我希望这很清楚。谢谢! 问题答案: 您正在混合使用

  • 所以这是我以前在jooq 3.11中工作的查询。 我正在更新一个JSON字段,但是它使用Json绑定映射到我模型中的字符串,我将在下面发布 这在升级到jooq 3.13.2后不再有效。我还不得不将我的sql方言更改为mysql,即使我正在使用mysql 5_7数据库,这可能是问题所在? 我也试过这个,它还是一样的 JsonBinding.class JsonConverter.class 以下是j