@JsonInclude(JsonInclude.Include.NON_EMPTY) 当我使用包装类并返回结果时不起作用
Posted
技术标签:
【中文标题】@JsonInclude(JsonInclude.Include.NON_EMPTY) 当我使用包装类并返回结果时不起作用【英文标题】:@JsonInclude(JsonInclude.Include.NON_EMPTY) not working when i use a wrapper class and return the result 【发布时间】:2020-07-12 19:18:01 【问题描述】:我的控制器代码是
public TestClass<DtoV1> getAllAlliance(@RequestHeader(ID_HEADER) String id,Pageable pageable, PagedResourcesAssembler pagedResourcesAssembler)
Page<DtoV1> pageResource = serviceV1.findPagedPrefixesById(pageable, id);
PagedResources<DtoV1> pagedResources = pagedResourcesAssembler.toResource(pageResource);
TestClass<DtoV1> testClass = new TestClass<>(pageResource.getContent(),pagedResources.getLinks());
return testClass;
我的 TestClass Wrapper 是
enter code herepublic class TestClass<T>
public String name;
public Collection<T> content;
public List<Link> links;
public String[] st= new String[0];
public TestClass(Collection<T> content,List<Link> links)
this.content = content;
this.name="sunil";
this.links = links;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@JsonProperty("_name")
public String getName()
return this.name;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@JsonProperty("_st")
public String[] getSt()
return st;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@JsonProperty("_embedded")
public Collection<T> getContent()
return this.content;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@JsonProperty("_links")
public List<Link> getLinks()
return this.links;
我的结果是
"_name": "sunil",
"_embedded": [
"key": "0000435",
"type": "Test",
"issuing": "temp",
"issued": "temp",
"dateIssued": "1989-10-22",
"links": []
],
"_links": [
"rel": "first",
"href": "http://localhost:8080/v1?page=0&size=20",
"hreflang": null,
"media": null,
"title": null,
"type": null,
"deprecation": null
]
如果您看到我在测试类中创建了一个 字符串空数组 st,它不会出现,但为什么要休息
使用 @JsonInclude(JsonInclude.Include.NON_EMPTY)
不会出现预期的 null 和空值【问题讨论】:
它按预期工作。由于您已将@JsonInclude(JsonInclude.Include.NON_EMPTY)
包含在_st
上。它是空字符串数组。它不会出现在结果中
从 getSt() 中移除 @JsonInclude(JsonInclude.Include.NON_EMPTY)
@Ajeet47 你没有看到我想要的我想要的 null 值不应该出现,但它们会出现
@SunilKumar 你是说 _links 吗?如果是这种情况,那么您也应该在 Link 类上添加注释。
它是一个 java 类库
【参考方案1】:
问题是第三方对象。因此,如果遵循这个概念,我相信如果它们不包含忽略 null 注释,我们不能忽略 null 或其他类对象为空
要做到这一点,我们可以使用 mixin 和 objectmapper。
【讨论】:
以上是关于@JsonInclude(JsonInclude.Include.NON_EMPTY) 当我使用包装类并返回结果时不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 中从控制器覆盖 @JsonInclude
jackSon注解– @JsonInclude 注解不返回null值字段
@JsonInclude(Include.NON_NULL)
@JsonInclude(Include.NON_NULL) 如何在 Spring Boot 中工作