Java · Jackson JSON naming
Jackson snake_case ↔ camelCase
Java property は camelCase のまま保ち、外部 snake_case JSON だけを serialization 境界で変換します。
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 入力は変換サーバーへ送信されません。