Jackson

Jacksonを使って、Java Objectをjsonに変換する場合のコードです。Java Objectはpublicのフィールドがあればgetterはなくてもよいです。

ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(bean);

jsonには、beanのプロパティ名をキーとするイメージが出力されます。プロパティ名と異なるキーにする場合には、@JsonPropertyを使用することができます。

public class Bean {

    @JsonProperty("user_id")
    public Integer id;

    public String name;
    
}

このBeanクラスからjsonに変換したイメージは下のようになります。

{"user_id":null,"name":null}

特定のクラスや特定のフィールドのnull値の項目のキーが生成されないようにしたい場合は、クラスまたはフィールドにアノテーションを記述します。

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Bean {
@JsonInclude(JsonInclude.Include.NON_NULL)
public String name;

または、ObjectMapperを設定してnull値の項目のキーが生成されないようにできます。

mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
String json = mapper.writeValueAsString(bean);

Spring Bootアプリケーション

ObjectMapperにInclude.NON_NULLを設定したい場合は、application.propertiesに記述します。

spring.jackson.serializationInclusion=NON_NULL