【发布时间】:2015-03-20 20:38:13
【问题描述】:
我有一个 POJO,我试图通过以下方式使用 Include.NOT_EMPTY 注释来排除空字段。
已更新完整代码
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Items {
/**
*
*/
@JsonProperty("items")
private List<Item> items = new ArrayList<Item>();
private Map<String, Object> additionalProperties =
new HashMap<String, Object>();
/**
*
* @return
* The items
*/
@JsonProperty("items")
public List<item> getItems() {
return items;
}
/**
*
* @param items
* The items
*/
@JsonProperty("items")
public void setitems(List<Item> items) {
this.items = items;
}
@JsonAnyGetter
@JsonUnwrapped
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
但是,当我打印出 JSON 时,我会得到以下方式的响应。
{ "items": [
{...}],
"additionalProperties": { } // I expect this to be removed.
}
知道我在这里做错了什么吗? 如果这很重要,我正在使用 Jackson-core 2.1.1。
【问题讨论】:
-
您的代码对我来说很好用。如果我创建一个
new Items()并直接对其进行序列化,则生成的 JSON 为{}。 -
@JarrodRoberson 我已经检查了链接的问题,但它没有帮助。
-
请给我们一个完整的例子。
-
我希望您也发布用于序列化实例的代码、实际输出和您想要获得的输出。
-
是的,我真的没有看到问题。我做了
new ObjectMapper().writeValueAsString(new Items());,它产生了{}。你在哪里看到"additionalProperties": { }?