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