もしくは、Jerseyで任意のオブジェクトをJSONで返却したいとき。
問題発生!
JerseyでListとかをJSONでレスポンスしたいときに以下のExceptionが出てしまう時があります。
javax.servlet.ServletException: org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json
これの対処法をご紹介します。
カスタムプロバイダーをつくろうよ!
JAX-RSのサンプルをこちらに記載しましたが、この一部が問題の解決方法です。カスタムプロバイダを作成すること。
デフォルトのJSONプロバイダだとListオブジェクトなどをJSON化することができないため、サンプルコード中のJSONProvider.javaを参考にして、カスタムプロバイダーを作成してください。サンプルではJSON変換のためにJSONICを使用しています。
コツは、web.xmlでプロバイダーを読み込めるようにすることです。