Java · Jackson JSON naming

Jackson snake_case ↔ camelCase

Java property は camelCase のまま保ち、外部 snake_case JSON だけを serialization 境界で変換します。

Camel Case Converter 編集チーム 著公開日 2026/09/12最終レビュー

1つの model/DTO には @JsonNaming

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class UserProfile {
  private String firstName;
  private String avatarUrl;
}

SnakeCaseStrategy により firstName を first_name に対応させ、各 field に annotation を付ける必要を減らせます。

アプリ全体の規則には ObjectMapper

ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
UserProfile profile = mapper.readValue(json, UserProfile.class);
String output = mapper.writeValueAsString(profile);

PropertyNamingStrategies.SNAKE_CASE を設定すると serialization と deserialization の外部 property 名に適用できます。

例外には @JsonProperty

public class UserProfile {
  @JsonProperty("user_id")
  private String userId;

  @JsonProperty("display_name")
  private String displayName;
}

一部だけ特殊な外部名を使う場合に property ごとの明示 mapping を使います。

本番利用時の注意点

  • class-level strategy、application ObjectMapper、field mapping の所有レベルを明確にします。
  • naming strategy は JSON property 名に作用し、string value 自体は変更しません。
  • 異なる外部名が1つの property に正規化されるなら API contract の問題として扱います。
  • 例は Jackson 2.x の com.fasterxml.jackson package を使うため、利用 major version の migration を確認してください。

JSON 境界をオンラインでテスト

ネスト、配列、除外キー、stop path、接頭辞、衝突、key-only diff をブラウザで確認できます。

.json ファイルをドロップ、または端末から選択

ファイルはブラウザ内でのみ読み取ります。最大 5 MB。

変換後 JSON
{
  "user_profile": {
    "first_name": "Ada",
    "created_at": "2026-09-12"
  }
}

解析、ファイル読み込み、整形、キー変換はすべてブラウザ内で実行されます。JSON 入力は変換サーバーへ送信されません。