POJOをJSONに変換
JavaのPOJO(Plain Old Java Object)インスタンスを、Jackson、Gson、またはMoshiを使ってJSONに変換します。コピー&ペーストしてそのまま使えるコード例に加え、同じ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に変換 と他の選択肢の比較
| 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に変換 は完全にクライアント側で動作します — サーバーへのアップロードなし、ログなし、入力内容のトラッキングなし。
関連ツール
JSONフォーマッター
JSONをオンラインで整形・検証・圧縮。無料・登録不要 — データはブラウザの外へ送信されません。
ツールを開くSQLフォーマッター
SQLクエリをオンラインで整形 — MySQL、PostgreSQL、SQLite、SQL Server、Oracle、BigQueryのコードをきれいに整えます。
ツールを開くUUID生成ツール
オンラインでUUIDを生成 — v1、v4、v7、Nilに対応。最大10,000件の一括生成が可能。無料・登録不要。
ツールを開くパスワードジェネレーター
暗号学的に安全な強力なランダムパスワードを生成します。長さと文字セットを自由にカスタマイズ可能 — すべてブラウザ内で完結します。
ツールを開くZerethon Social で作成・共有・成長しよう
無料登録。ポイントを獲得し、実績を集め、世界中のクリエイターとつながりましょう。