Java で空の JSON を作る
Java で空の JSON を作る
概要
Java でテストのために空の JSON {}
を作ろうとしてちょっと悩んだのでその備忘録.
空の JSON が必要なら,単純に "{}"
と書けばいいじゃないかとも思いますが,何かしらのオブジェクトを ObjectMapper を介してシリアライズしなければいけないというシチュエーションだったのです.
作り方
まず JSON にすべき空のクラスを用意しておきます.
public class EmptyClass {}
ObjectMapper#disable(SerializationFeature) メソッドを使う
JSON を生成する ObjectMapper にインスタンスを直接触れられるならば,
objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
objectMapper.writeValueAsString(new EmptyClass());
で OK です.
そもそも,空のクラスをシリアライズしようとすると次のような例外が出るので,これがすぐに見つかる解決策です.
com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class EmptyClass and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) )
@JsonSerialize アノテーションを使う
ObjectMapper のインスタンスに直接触れられない場合 (ライブラリやフレームワークの奥の方で ObjectMapper が使われている等),上述の方法は使えません.
ライブラリやフレークワークに「この ObjectMapper 使ってね」みたいなことができればそれでもいいですが,シリアライズされる側のクラスにアノテーション @JsonSerialize
を付けてしまうことでも解決できます.
@JsonSerialize public class EmptyClass {}
おまじない感は少々あります.