以下是一个POJO类(某个嵌套级别的类之一),其中一个对象,我使用Jackson序列化为JSON。
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Attribute {
private String label;
private String name; // Mandatory
private String description; // Mandatory
private String type; // Mandatory
private Boolean hidden;
private Boolean important;
...
使用@JsonInclude(JsonInclude.Include.NON_EMPTY)
仅包含值不为null
或为空的字段。问题是字段name
,description
和type
是必需的,即,即使它们是null
或为空,它们也必须存在于生成的JSON中。提供这些字段后,我没有问题。但是当他们没有提供时,
而不是 -
"attributes" : [
{
"type" : "Text",
"hidden" : false,
"important" : false,
...
我想要这个 -
"attributes" : [
{
"name" : "",
"description" : "",
"type" : "Text",
"hidden" : false,
"important" : false,
...
在上述情况下,字段label
,name
和description
为空。此外,"有"属性以形式 -
List<Attribute> attributes;
这就是为什么,上面的JSON就是这样。
任何帮助都会非常感激。
答案 0 :(得分:2)
我认为来自@chrylis的建议正是您所寻求的。在字段级别使用@JsonInclude
(默认值为JsonInclude.Include.ALWAYS
)注释特定字段以覆盖类级别@JsonInclude(JsonInclude.Include.NON_EMPTY)
的想法。以下是一个例子:
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public static class Attribute {
private String label;
@JsonInclude
private String name; // Mandatory
@JsonInclude
private String description; // Mandatory
@JsonInclude
private String type; // Mandatory