1

我想在杰克逊做运行时排除。

在下面的示例中,它具有三个变量

public class Field {

//------------------------- private variables ----------------------------
private A header;
private B values;
private C argvalues;

//------------------------- constructors ----------------------------------

public Field(A header, B values) {      
    this.header = header;
    this.values = values;
}
public Field(A header, C values) {      
    this.header = header;
    this.argvalues = values;
}

public Field() {

}
//--------------------- getter-setter -------------------------------------
public A getHeader() {
    return header;
}

public void setHeader(A header) {
    this.header = header;
}

public B getValues() {
    return values;
}

public void setValues(B values) {
    this.values = values;
}
public C getArgvalues() {
    return argvalues;
}

public void setArgvalues(C argvalues) {
    this.argvalues = argvalues;
}


    }

假设如果在运行时未设置任何变量,我如何将它们从 json 中排除。请帮忙 。

<--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@---- >

当我们在下面的示例中使用 @JsonProperty

public String getType() {

    return type;

}

@ JsonProperty("Json")

public void setType(String type) {

    this.type = type;

}


public List<TwoDArrayItem> getItems() {

    return items;

}


@ JsonProperty("Json")

public void setItems(List<TwoDArrayItem> items) {

    this.items = items;

}

在任何时候,我都只会设置一个 setter 方法,但两者的 JsonProperty 名称应该相同。当我编译这个我得到错误。如何为两者设置相同的名称。?

4

1 回答 1

1

要始终排除给定对象的空值,您可以使用以下命令对其进行注释:

@JsonSerialize(include=Inclusion.NON_NULL) // Jackson 1.9 or lower
@JsonInclude(Include.NON_NULL)             // Jackson 2 or higher
public class Field {
    // ...
}

与排除整个对象的空值相反,您可以为特定字段排除它们:

public class Field {
    private A header;
    private B values;

    @JsonSerialize(include=Inclusion.NON_NULL) // Jackson 1.9 or lower
    @JsonInclude(Include.NON_NULL)             // Jackson 2 or higher
    private C argvalues;

    // ...
}

要为给定会话动态排除空值,请创建一个对象映射器并将其配置为也排除空值。

final ObjectMapper mapper = new ObjectMapper()
    .setSerializationInclusion(Include.NON_NULL);
于 2013-05-07T11:51:31.950 回答