我的应用程式的null值不会被序列化为json,没关系。但是在一种特定情况下,我想将空值发送给客户端。我该如何实现?
class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
对于这个类,我尝试使用JsonInclude.Always,但是稍后它的默认值会在配置中被覆盖。
答案 0 :(得分:2)
使用JsonInclude
注释。示例:
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Test {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
System.out.println(mapper.writeValueAsString(new User()));
}
}
@JsonInclude
class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
上面的代码显示:
{"name":null}
JsonInclude
中的默认值为ALWAYS
:
/**
* Inclusion rule to use for instances (values) of types (Classes) or
* properties annotated.
*/
public Include value() default Include.ALWAYS;
其他选择是使用JsonSerialize
批注:
@JsonSerialize(include = Inclusion.ALWAYS)
class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
结果与JsonInclude
相同。
答案 1 :(得分:0)
尝试
@JsonInclude(JsonInclude.Include.ALWAYS)