Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaのJackson「@JsonInclude」アノテーションとは?使い方と重要性を解説

Jacksonの@JsonIncludeアノテーションは、特定の条件に応じてクラスのプロパティ(フィールド)をJSON出力から除外するために使用できるアノテーションです。除外条件はJsonInclude.Include列挙型を使って定義します。

JsonInclude.Includeには、「ALWAYS」「NON_DEFAULT」「NON_EMPTY」「NON_NULL」といった定数が用意されており、これらを指定することで各プロパティを出力に含めるかどうかを柔軟に制御できます。例えば、値がnullや空文字のフィールドをJSONに含めたくない場合に非常に便利です。

構文

public static enum JsonInclude.Include extends Enum<JsonInclude.Include>

主な定数一覧

  • ALWAYS:常にプロパティを含める(デフォルトの動作)
  • NON_NULL:値がnullの場合のみプロパティを除外する
  • NON_EMPTY:null、空文字、空のコレクションなどの場合にプロパティを除外する
  • NON_DEFAULT:デフォルト値と同じ場合にプロパティを除外する

使用例

以下の例では、Employeeクラスに@JsonInclude(JsonInclude.Include.NON_EMPTY)を付与しています。empNameがnullのため、JSON出力から除外されます。

import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
import java.io.*;

public class JsonIncludeTest {
    public static void main(String args[]) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        Employee emp = new Employee();
        String jsonString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(emp);
        System.out.println(jsonString);
    }
}

// Employeeクラス
@JsonInclude(JsonInclude.Include.NON_EMPTY)
class Employee {
    public int empId = 115;
    public String empName = null;

    @Override
    public String toString() {
        return "Employee{" +
                "empId=" + empId +
                ", empName='" + empName + '\'' +
                '}';
    }
}

実行結果

{
    "empId" : 115
}

このように、empNameがnullであるため出力されず、値を持つempIdだけが出力されています。@JsonIncludeアノテーションを活用することで、不要なnullフィールドを取り除いたクリーンなJSONを生成でき、APIレスポンスのサイズ削減や可読性の向上にもつながります。

  1. JavaにおけるOverlayLayoutの重要性とは?基本から使い方まで解説

    OverlayLayoutとは OverlayLayoutはObjectクラスのサブクラスとして実装されたレイアウトマネージャーで、複数のコンポーネントを互いに重ねて配置できるのが最大の特徴です。各コンポーネントに指定されたアライメント(整列設定)に基づいて、相対的な位置が決定されます。 コンポーネントごとに異なるサイズを設定すると、すべてのコンポーネントが重なり合った状態で表示され、それぞれを確認できます。 コンポーネントを他のコンポーネントの上やフレーム内の任意の位置に整列させるには、setAlignmentX()メソッドとsetAlignmentY()メソッドを使用します。引数には0

  2. JavaのFocusListenerインターフェースとは?重要性と実装方法を解説

    FocusListenerインターフェースとはJava AWT/SwingにおけるFocusListenerは、コンポーネントがキーボードフォーカスを取得・喪失したタイミングで発生するイベントを受け取るためのリスナーインターフェースです。ユーザーがどのコンポーネントを操作しているのかを検知できるため、入力フォームのバリデーションやガイド表示など、対話的なUIを実現するうえで重要な役割を担います。フォーカスイベントは、コンポーネントがキーボードフォーカスを取得または喪失したときに生成されます。フォーカスイベントを表すオブジェクトは、FocusEventクラスから作成されます。FocusEvent