Spring Bootの@RequestBodyと@ResponseBodyを完全解説!初心者でもわかるJSON入出力とJackson設定
生徒
「Spring BootでJSONのリクエストやレスポンスを扱うときって、どうすればいいんですか?」
先生
「Spring Bootでは、@RequestBodyと@ResponseBodyを使うことで、JSON形式のデータを簡単に扱うことができますよ。」
生徒
「それってJacksonっていうライブラリも関係してるんですか?」
先生
「はい。Jacksonというライブラリが内部で自動的に動いて、JSONとJavaオブジェクトの変換をしてくれています。それでは、具体的に見ていきましょう。」
1. @RequestBodyと@ResponseBodyとは?
Spring BootでJSONデータを扱うには、@RequestBodyと@ResponseBodyというアノテーションを使用します。@RequestBodyはクライアントから送られてきたJSONをJavaオブジェクトに変換し、@ResponseBodyはJavaオブジェクトをJSON形式にしてレスポンスとして返す役割を持っています。
この2つを使えば、JSONの送受信をとてもシンプルに記述できます。
2. @RestControllerを使えば@ResponseBodyは省略できる
@RestControllerをクラスにつけると、全てのメソッドに@ResponseBodyが暗黙的に適用されます。そのため、明示的に@ResponseBodyを書かなくても、自動的にJSONレスポンスが返される仕組みになっています。
@RestController
@RequestMapping("/api")
public class UserController {
@PostMapping("/user")
public User createUser(@RequestBody User user) {
return user;
}
}
3. JSONデータのやり取りをするためのサンプル
クライアントが以下のようなJSONデータをPOSTしたとします。
{
"name": "田中太郎",
"email": "tanaka@example.com"
}
このリクエストをSpring Bootで受け取るには、以下のようにJavaクラスを作ります。
public class User {
private String name;
private String email;
// getterとsetterは省略可能(Lombok使用可)
}
そして、コントローラー側で@RequestBodyを使って受け取ります。
@PostMapping("/user")
public User receiveUser(@RequestBody User user) {
return user;
}
このように記述することで、クライアントから送られてきたJSONデータがJavaオブジェクトに変換され、そのままレスポンスとして返されます。
4. Jacksonによる自動変換の仕組み
Spring Bootでは、Jacksonというライブラリが標準で組み込まれており、JSONとJavaの相互変換(シリアライズ/デシリアライズ)を自動で行います。
Jacksonがなければ、JSONの解析や生成を自分で行う必要がありますが、Spring Bootではこの作業が不要になります。非常に便利です。
5. Jacksonのカスタム設定(フィールド名や日付フォーマットなど)
Jacksonは非常に柔軟で、フィールド名を変換したり、日付のフォーマットを指定したりすることも可能です。
例えば、Javaのフィールド名をスネークケース(user_name)に変換するには以下のように設定します。
@Configuration
public class JacksonConfig {
@Bean
public Jackson2ObjectMapperBuilderCustomizer customizer() {
return builder -> builder.propertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
}
}
これにより、JavaのuserNameというフィールドが、JSONではuser_nameとして出力されます。
6. 日付のフォーマット指定も簡単にできる
日付のフォーマットを変更したい場合も、Jacksonの設定で対応可能です。
@Bean
public Jackson2ObjectMapperBuilderCustomizer dateFormatCustomizer() {
return builder -> builder.simpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
この設定を追加することで、JavaのDate型などが指定したフォーマットでJSONに変換されます。
7. HTTPレスポンスの確認例
上記の設定を反映させた状態でAPIを実行すると、以下のようなJSONレスポンスが返ってきます。
{
"user_name":"佐藤一郎",
"email":"sato@example.com",
"created_at":"2025-09-04 12:34:56"
}
8. JSONのキー名を日本語にしたい場合
Jacksonでは、フィールドに@JsonPropertyを付けることで、任意のキー名に変更することができます。
public class Product {
@JsonProperty("商品名")
private String name;
@JsonProperty("価格")
private int price;
// getter, setter
}
このようにすることで、日本語のキーでJSONを出力することも可能ですが、一般的には英語が推奨されます。
まとめ
今回の内容では、Spring Bootを使ったJSON入出力の仕組みとして、@RequestBodyと@ResponseBodyの基本的な役割、そして@RestControllerによる省略の便利さを丁寧に整理しました。とくに、Jacksonによる自動シリアライズ・デシリアライズがどれほど開発効率を高めているかを意識しながら振り返ることで、WebAPI構築の基盤となる処理の流れをより深く理解できます。さらに、プロパティ名のカスタム設定や日付フォーマットの変更、日本語キーの指定など、実務で頻繁に求められるJSON変換の応用テクニックにも触れることで、実際の開発現場を想定した応用力も養える内容になりました。
また、JSONリクエストを受け取るJavaクラスの設計方法、レスポンスとして返す形式の確認など、API開発全体の流れを一通り体験できる構成にもなっています。これらを踏まえると、Spring BootとJacksonを組み合わせることで、柔軟かつ高速にフロントエンドと連携するアプリケーションを構築できることが明確に理解できたのではないでしょうか。
さらに、コード例を通じて、実際のプロジェクトで使用される形式をそのまま確認できたため、サンプルを参考に自分自身のAPI構築へ応用しやすい内容です。特に、PropertyNamingStrategies.SNAKE_CASE や @JsonProperty の活用などは、外部サービスとの連携時にも重要な知識であり、標準機能を使うだけでも高い柔軟性が確保できる点が魅力です。初学者の方でも、Spring BootでJSONを変換する流れが自然に理解できるよう、小さなステップに分けて確認できました。
サンプルプログラム(まとめ版)
まとめとして、今回振り返った内容を踏まえて、より実践的なサンプルコードを掲載します。
@RestController
@RequestMapping("/api")
public class SampleController {
@PostMapping("/info")
public UserInfo receiveInfo(@RequestBody UserInfo info) {
return info;
}
}
public class UserInfo {
@JsonProperty("ユーザー名")
private String userName;
@JsonProperty("メールアドレス")
private String email;
@JsonProperty("作成日時")
private Date createdAt;
// getter と setter
}
@Configuration
public class CustomJacksonConfig {
@Bean
public Jackson2ObjectMapperBuilderCustomizer customizer() {
return builder -> {
builder.propertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
builder.simpleDateFormat("yyyy-MM-dd HH:mm:ss");
};
}
}
このように、Javaクラス側で日本語キーを指定しつつ、全体設定ではスネークケースや日付フォーマットを統一することで、多様なJSON形式に対応できる柔軟なAPIが構築できます。Spring BootとJacksonの組み合わせは、シンプルなコードで高度な変換処理を行えるため、実務では非常に重要なスキルとなります。
生徒:「今日の内容って、結局JSONとJavaの変換をどう扱うかが中心でしたよね?」
先生:「その通りです。@RequestBodyで受け取って、@ResponseBodyで返すという基本の流れを押さえることが大切です。」
生徒:「Jacksonが自動で変換してくれるってすごく便利ですね!」
先生:「ええ。さらに、設定をカスタマイズすることでスネークケースや日付フォーマットも自在に変えられますよ。」
生徒:「@JsonPropertyで日本語キーも使えるのは驚きでした。でも実務では英語が一般的なんですよね?」
先生:「そのとおり。用途に応じて使い分けることが大切です。今回の例を応用すれば、いろんなAPI開発ができますよ。」
生徒:「ありがとうございます!実際に自分のAPIでも試してみます!」
この記事を読んだ人からの質問
プログラミング初心者からのよくある疑問/質問を解決します
Spring BootでJSONを受け取るにはどんなアノテーションを使いますか?
Spring BootでJSONデータを受け取るには@RequestBodyアノテーションを使います。これにより、クライアントから送られてきたJSONが自動的にJavaオブジェクトへ変換されます。
Spring FrameworkやThymeleafを使った Webアプリ開発の全体像をやさしく理解したい人には、 この入門書が定番です。
Spring Framework超入門をAmazonで見る※ Amazon広告リンク