将对象转换为JSON忽略不设置原语类型我有一个类看起来像下面: -同时使用杰克逊
@JsonSerialize(include = Inclusion.NON_EMPTY)
public class JsonPojo {
private int intVal;
private String strVal;
public int getIntVal() {
return intVal;
}
public void setIntVal(int intVal) {
this.intVal = intVal;
}
public String getStrVal() {
return strVal;
}
public void setStrVal(String strVal) {
this.strVal = strVal;
}
}
如果我有JsonPojo的一个实例,其中未设置的int字段然后而将其转换成JSON,如下图所示杰克逊分配一个默认的0: -
public static void main(String[] args) {
JsonPojo jsonPojo = new JsonPojo();
jsonPojo.setStrVal("Hello World");
try {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(Feature.FAIL_ON_EMPTY_BEANS, false);
String json = mapper.writeValueAsString(jsonPojo);
System.out.println(json);
} catch (Exception e) {
}
}
这将输出: - {"intVal":0,"strVal":"Hello World"}
有没有一种方法,我可以忽略当未将intVal
设置为intVal
的数据类型为Integer
时,Json输出中的?如果我将intVal
转换为Integer,那么当这个值没有设置时,它将为空&做JsonSerialize(include = Inclusion.NON_EMPTY)
在转换到json期间将跳过intVal
。
但我想知道是否可以实现相同的行为,而无需将intVal
从int
转换为Integer
?
我正在使用杰克逊1.9。
你的问题很有趣。我向作者申请了一个Jsonfilter,希望这可以提供帮助。 –