我有一个JSON对象,可能包含一些空值。 我使用com.fasterxml.jackson.databind中的ObjectMapper将我的JSON对象转换为String。
private ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(object);
如果我的对象包含任何包含值为null的字段,则该字段不包含在来自writeValueAsString的String中。 我希望我的ObjectMapper给我字符串中的所有字段,即使它们的值为null。
示例:
object = {"name": "John", "id": 10}
json = {"name": "John", "id": 10}
object = {"name": "John", "id": null}
json = {"name": "John"}
答案 0 :(得分:5)
默认情况下,杰克逊应将null
字段序列化为null
。请参阅以下示例
public class Example {
public static void main(String... args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
String json = mapper.writeValueAsString(new Test());
System.out.println(json);
}
static class Test {
private String help = "something";
private String nope = null;
public String getHelp() {
return help;
}
public void setHelp(String help) {
this.help = help;
}
public String getNope() {
return nope;
}
public void setNope(String nope) {
this.nope = nope;
}
}
}
打印
{
"help" : "something",
"nope" : null
}
你不需要做任何特别的事。
答案 1 :(得分:0)
Include.ALWAYS为我工作。
objectMapper.setSerializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Include.ALWAYS);
包含的其他可能值为