猫でもわかるWeb開発・プログラミング

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

Java Quarkus で Class のインスタンスを返したらそのまま JSON になるようにしたい

やりたいこと

こんな感じで、クラスのオブジェクトを返したらそのまま JSON のレスポンスになって欲しい

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

@Path("/user")
public class LoginHandler {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response hello() {
        return new Response("dummy");
    }

    public static class Response {
        public String state;

        public LoginStateResponse(String state) {
            this.state = state;
        }
    }
}

やり方

quarkus-rest-jackson を依存関係に入れるだけでできるようになる。

Gradle の場合

dependencies {
    ...
    implementation 'io.quarkus:quarkus-rest-jackson'
}

Jackson ではなく JSON-B を使いたい場合は、 quarkus-rest-jsonb というものあります。

公式ドキュメント

ja.quarkus.io