いくつかのnull
値を含む可能性のあるJSONオブジェクトがあります。 _com.fasterxml.jackson.databind
_のObjectMapper
を使用して、JSONオブジェクトをString
に変換します。
_private ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(object);
_
オブジェクトにnull
として値を含むフィールドが含まれている場合、そのフィールドはwriteValueAsString()
からのString
に含まれていません。 ObjectMapper
の値がString
であっても、null
のすべてのフィールドを取得できるようにしたい。
例:
_object = {"name": "John", "id": 10}
json = {"name": "John", "id": 10}
object = {"name": "John", "id": null}
json = {"name": "John"}
_
Jacksonはデフォルトで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
}
特別なことをする必要はありません。
Include.ALWAYS
は私のために働きました。 objectMapper.setSerializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Include.ALWAYS);
Include
の他の可能な値は次のとおりです。
Include.NON_DEFAULT
Include.NON_EMPTY
Include.NON_NULL