メインコンテンツへスキップ
Z

POJOをJSONに変換

JavaのPOJO(Plain Old Java Object)インスタンスを、Jackson、Gson、またはMoshiを使ってJSONに変換します。コピー&ペーストしてそのまま使えるコード例に加え、同じPOJOクラスを再構築したいときのための逆変換ツールも用意しています。

無料 登録不要 クライアントサイド プライバシーに配慮 Updated
注意: POJO → JSONへの変換はJVMが実行中であることを前提とするプロセスです(シリアライザが実際のフィールド値を読み取る必要があるため)。以下のコード例はお使いのアプリケーション内で実行するものであり、このページはあくまで簡単なリファレンスです。逆方向、つまりJSONをJavaのPOJOクラスに変換したい場合は?次のツールをご利用ください: JSON to Java POJO.

Jackson — Springのデフォルト

Spring Boot ships Jackson by default. ObjectMapper is thread-safe — reuse a single instance.

import com.fasterxml.jackson.databind.ObjectMapper;

private static final ObjectMapper MAPPER = new ObjectMapper();

public static String toJson(Object pojo) throws JsonProcessingException {
    return MAPPER.writeValueAsString(pojo);
}

// Pretty-printed:
String pretty = MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(pojo);

Annotate fields with @JsonProperty("snake_case") when the JSON field name differs from the Java field. @JsonIgnore skips a field; @JsonInclude(NON_NULL) drops nulls.

Gson — 依存関係が少なく、Androidとの相性も良い

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

private static final Gson GSON = new GsonBuilder()
    .serializeNulls()              // include null fields
    .setPrettyPrinting()           // optional
    .create();

public static String toJson(Object pojo) {
    return GSON.toJson(pojo);
}

Use @SerializedName("json_field") on a Java field to override the JSON key. Mark fields transient to skip them.

Moshi — Kotlin向け、コード生成オプションあり

import com.squareup.moshi.Moshi;
import com.squareup.moshi.JsonAdapter;

Moshi moshi = new Moshi.Builder().build();
JsonAdapter<User> adapter = moshi.adapter(User.class);

String json = adapter.toJson(user);
// Pretty:
String pretty = adapter.indent("  ").toJson(user);

POJOをJSONに変換 と他の選択肢の比較

POJOをJSONに変換 と一般的なブラウザ・デスクトップの代替ツールを比較 — 機能を一目で比較できます。
Concern Jackson Gson Moshi
Default in Spring Boot Jackson Jackson
Smallest jar Gson (~280KB) Jackson (3 modules ~2MB)
Kotlin support Moshi (best) Jackson kotlin module Gson (kludgy)
Annotation-free path Jackson + naming strategy Gson + FieldNamingPolicy Moshi reflection adapter
Streaming API JsonGenerator JsonWriter JsonWriter

よくある質問

POJOをJSONに変換する際、どのライブラリを使うべき?

Spring Bootを使っているならJacksonがおすすめです。すでに同梱されており、スタックの他の部分もデフォルトでその存在を前提としています。Androidや依存関係を最小限にしたいCLIツールでは、Gson(jarサイズが小さい)やMoshi(Kotlinサポートに優れる)を選びましょう。3つとも同じPOJOを問題なく扱えます。違いはエコシステムとの相性であって、処理能力そのものではありません。

出力されるJSONのフィールド名を変更するには?

Jacksonでは<code class="font-mono">@JsonProperty("name")</code>、Gsonでは<code class="font-mono">@SerializedName("name")</code>、Moshiでは<code class="font-mono">@Json(name = "name")</code>を使います。これら3つのアノテーションはいずれもフィールド宣言の直前に付けます。

nullや空のフィールドを出力から除外するには?

Jacksonでは、クラスまたはフィールドに<code class="font-mono">@JsonInclude(JsonInclude.Include.NON_NULL)</code>を指定します。Gsonではnull値はデフォルトで除外されます — 保持したい場合はビルダーで<code class="font-mono">.serializeNulls()</code>を呼び出してください。Moshiでもnull値はデフォルトで除外され、アダプターに<code class="font-mono">.serializeNulls()</code>を設定しない限りその挙動は変わりません。

なぜ自分のPOJOがシリアライズされず、空のオブジェクト{}になってしまうのか?

Jacksonでは、publicなgetter、またはデフォルトコンストラクタとアクセス可能なフィールドが必要です。Lombokを使っている場合は<code class="font-mono">@Getter</code>(または<code class="font-mono">@Data</code>)を付与しているか確認してください。record(Java 16以降)を使う場合は、アクセサが自動的に生成されます。

Javaのコードを書かずにPOJOをJSONに変換できる?

厳密には無理です — JSONへのシリアライズは、Javaインスタンスが実行時に保持している実際の値に依存するため、実際に動作するJVMが必要になります。コードを書かずにできることとしては、まず私たちの<a class="underline" href="/json-to-java">JSON to Java POJO</a>ツールを使ってJSONサンプルからPOJOをあらかじめ生成し、そのうえで上記のコード例を自分のプロジェクトに適用する、という方法があります。

この変換によってデータが失われることはある?

プリミティブ型とStringについては失われません。ただし一部のJavaの型には専用のアダプターが必要です。<code class="font-mono">LocalDateTime</code>(Jackson: <code class="font-mono">JavaTimeModule</code>を登録)、<code class="font-mono">BigDecimal</code>の精度(Jackson: <code class="font-mono">USE_BIG_DECIMAL_FOR_FLOATS</code>)、<code class="font-mono">enum</code>の値(<code class="font-mono">name()</code>または<code class="font-mono">ordinal()</code>のどちらを使うか設定可能)などです。

逆方向の変換が必要な場合は?

JSONのサンプルを貼り付けるだけで、Jacksonスタイル、Lombok、またはrecordの型付きJava POJOクラスを取得できます。ネストしたクラスも自動的に生成されます。

JSON to Java POJOを開く →

POJOをJSONに変換 とは?

POJOをJSONに変換するとは、フィールド・ゲッター・セッターを持つPlain Old Java ObjectのJavaインスタンスを取得し、それをJSON文字列にシリアライズする処理のことです。この処理に使われる標準的なライブラリには、Jackson(`ObjectMapper.writeValueAsString(obj)`)、Gson(`new Gson().toJson(obj)`)、Moshi(`moshi.adapter(MyType.class).toJson(obj)`)があります。それぞれのライブラリはオブジェクトのフィールドをリフレクションで走査し、付与されているアノテーション(例: `@JsonProperty`、`@SerializedName`)を適用したうえで、有効なJSONを生成します。

概要

POJOをJSONに変換 は Zerethon Tools が提供する無料の 開発者 ユーティリティです。JavaのPOJO(Plain Old Java Object)インスタンスを、Jackson、Gson、またはMoshiを使ってJSONに変換します。コピー&ペーストしてそのまま使えるコード例に加え、同じPOJOクラスを再構築したいときのための逆変換ツールも用意しています。. ブラウザ上で完全に動作します — 登録不要、アップロード不要。

カテゴリ
開発者
料金
無料
プライバシー
ブラウザベース
登録
不要

プライバシー

明記されない限り、データがブラウザの外に送信されることはありません。POJOをJSONに変換 は完全にクライアント側で動作します — サーバーへのアップロードなし、ログなし、入力内容のトラッキングなし。

関連ツール

Zerethon Social で作成・共有・成長しよう

無料登録。ポイントを獲得し、実績を集め、世界中のクリエイターとつながりましょう。

Zerethon を無料で試す