Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot jackson 2-将API响应空字符串转换为null_Spring Boot_Jackson_Jackson Databind - Fatal编程技术网

Spring boot jackson 2-将API响应空字符串转换为null

Spring boot jackson 2-将API响应空字符串转换为null,spring-boot,jackson,jackson-databind,Spring Boot,Jackson,Jackson Databind,我想转换属性中的空字符串值,并在API响应模型对象中将其替换为null 假设API响应是Transaction,它包含两个类型为TransDetails和UserDetails的实例变量。这两个模型类包含大约100个字符串属性 现在,TransDetails和UserDetails的一些属性在API响应中显示空字符串 如何在jackson 2中将其更改为null 我尝试了解决方案,但它在类级别不起作用。我相信您可以尝试配置ObjectMapper smth。如下 final ObjectMapp

我想转换属性中的空字符串值,并在API响应模型对象中将其替换为
null

假设API响应是
Transaction
,它包含两个类型为
TransDetails
UserDetails
的实例变量。这两个模型类包含大约100个字符串属性

现在,
TransDetails
UserDetails
的一些属性在API响应中显示空字符串

如何在jackson 2中将其更改为null


我尝试了解决方案,但它在类级别不起作用。

我相信您可以尝试配置ObjectMapper smth。如下

final ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);

这可能很有用

我想说,您可以在响应模型类的顶部使用下面的命令,这将使您的所有值都为null,并且json响应中不包含空字符串值,这意味着根据json,这将为null

@Data
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Foo {
    private String a;
    private String b;
}
如果a有一些值,比如a和b没有(它是null或空的),那么json响应将是->

{
    "a": "A"
}

希望您觉得这很有用。

您能为控制器和返回的对象提供代码吗。因为默认情况下,除非您使用了一些“@JsonInclude(JsonInclude.Include.NON_null)”将只显示非null的json,否则在该期间内没有设置任何值的每个字段都会得到null。像下面这样。{“system”:“mySystem”,“created”:null,“createdBy”:null}问题是用null替换空字符串。我尝试过这个方法,但在jackson 2和最新的spring boot API中不起作用。根据我的调查,我建议您不要将空字符串转换为null,这就是它不起作用的原因。对不起。目前,我认为要么需要setter,要么需要自定义反序列化程序,这可能是最好的选择。因为接受\空\字符串\作为\空\对象的行为本身是有意的。这是根据