カテゴリ: Spring 更新日: 2026/04/13

Spring Bootの@RequestBodyと@ResponseBodyを完全解説!初心者でもわかるJSON入出力とJackson設定

Spring Bootの@RequestBody/@ResponseBody:JSON入出力とJackson設定
Spring Bootの@RequestBody/@ResponseBody:JSON入出力とJackson設定

先生と生徒の会話形式で理解しよう

生徒

「Spring BootでJSONのリクエストやレスポンスを扱うときって、どうすればいいんですか?」

先生

「Spring Bootでは、@RequestBody@ResponseBodyを使うことで、JSON形式のデータを簡単に扱うことができますよ。」

生徒

「それってJacksonっていうライブラリも関係してるんですか?」

先生

「はい。Jacksonというライブラリが内部で自動的に動いて、JSONとJavaオブジェクトの変換をしてくれています。それでは、具体的に見ていきましょう。」

1. @RequestBodyと@ResponseBodyとは?

「1. @RequestBodyと@ResponseBodyとは?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. @RequestBodyと@ResponseBodyとは?
1. @RequestBodyと@ResponseBodyとは?

Spring BootでJSONデータを扱うには、@RequestBody@ResponseBodyというアノテーションを使用します。@RequestBodyはクライアントから送られてきたJSONをJavaオブジェクトに変換し、@ResponseBodyはJavaオブジェクトをJSON形式にしてレスポンスとして返す役割を持っています。

この2つを使えば、JSONの送受信をとてもシンプルに記述できます。

2. @RestControllerを使えば@ResponseBodyは省略できる

2. @RestControllerを使えば@ResponseBodyは省略できる
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データのやり取りをするためのサンプル

3. JSONデータのやり取りをするためのサンプル
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による自動変換の仕組み

「4. Jacksonによる自動変換の仕組み」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. Jacksonによる自動変換の仕組み
4. Jacksonによる自動変換の仕組み

Spring Bootでは、Jacksonというライブラリが標準で組み込まれており、JSONとJavaの相互変換(シリアライズ/デシリアライズ)を自動で行います。

Jacksonがなければ、JSONの解析や生成を自分で行う必要がありますが、Spring Bootではこの作業が不要になります。非常に便利です。

5. Jacksonのカスタム設定(フィールド名や日付フォーマットなど)

5. Jacksonのカスタム設定(フィールド名や日付フォーマットなど)
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. 日付のフォーマット指定も簡単にできる

6. 日付のフォーマット指定も簡単にできる
6. 日付のフォーマット指定も簡単にできる

日付のフォーマットを変更したい場合も、Jacksonの設定で対応可能です。


@Bean
public Jackson2ObjectMapperBuilderCustomizer dateFormatCustomizer() {
    return builder -> builder.simpleDateFormat("yyyy-MM-dd HH:mm:ss");
}

この設定を追加することで、JavaのDate型などが指定したフォーマットでJSONに変換されます。

7. HTTPレスポンスの確認例

「7. HTTPレスポンスの確認例」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. HTTPレスポンスの確認例
7. HTTPレスポンスの確認例

上記の設定を反映させた状態でAPIを実行すると、以下のようなJSONレスポンスが返ってきます。


{
"user_name":"佐藤一郎",
"email":"sato@example.com",
"created_at":"2025-09-04 12:34:56"
}

8. JSONのキー名を日本語にしたい場合

8. JSONのキー名を日本語にしたい場合
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 BootでJSONをレスポンスとして返すにはどうすればいいですか?

JSONをレスポンスとして返すには@ResponseBodyアノテーションを使います。これにより、Javaオブジェクトが自動的にJSON形式へ変換されて返されます。
カテゴリの一覧へ
新着記事
New1
Java
JavaのStreamのmaxを完全解説!初心者でもわかる最大値の取得方法
新規投稿
New2
JSP
JSPで改行やスペースを正しく表示する方法!HTMLとの連携ポイントも解説
更新記事
New3
Spring
SpringのJpaRepositoryとsaveAndFlushの使い方を完全ガイド!初心者でもわかるデータ操作
更新記事
New4
Spring
Springの@Autowiredアノテーションの使い方を完全ガイド!初心者でもわかる依存性注入
更新記事
人気記事
No.1
Java&Spring記事人気No1
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.2
Java&Spring記事人気No2
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.3
Java&Spring記事人気No3
JSP
JSPでCSSやJSを読み込む基本!外部ファイルのパス指定に注意しよう
No.4
Java&Spring記事人気No4
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.5
Java&Spring記事人気No5
JSP
JSPでフォームを表示して入力を受け取る基本手順をやさしく解説!初心者向けフォーム処理の入門ガイド
No.6
Java&Spring記事人気No6
JSP
JSPでif文・for文を使う方法!初心者でもわかるJavaとの違いと使い方
No.7
Java&Spring記事人気No7
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.8
Java&Spring記事人気No8
Java
JavaのArrayListクラスとgetメソッドを完全解説!初心者でもわかるリストの要素取得