私はJAX-RSが初めてです。List を JSON 配列に表現しようとしています:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/getUsersResource/{userId}")
public List<AbstractResource> getUsersResources(@PathParam("userId") final String userId) {
if (userId == null) {
return null;
}
User user = null;
try {
user = userDao.getUserById(Integer.parseInt(userId));
} catch (NumberFormatException nfe) {
user = userDao.getUser(userId);
}
if (user == null) {
return null;
}
return abstractResourceDao.getUsersResources(null, user.userId);
}
この URL を実行すると、次のようになります。
{"例外": {"名前": "WebApplicationException"}}
@XmlRootElement のみで AbstractResource クラスに注釈を付けました。 @Produces 注釈パラメーターを
@Produces(MediaType.APPLICATION_XML)
適切な結果が得られます。ここに私のweb.xmlがあります:
<servlet>
<servlet-name>REST Application</servlet-name>
<servlet-class>org.apache.wink.server.internal.servlet.RestServlet</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.balthaser.b3e.rest.RESTApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>REST Client</servlet-name>
<servlet-class>com.balthaser.b3e.rest.client.RESTClient</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>REST Client</servlet-name>
<url-pattern>/rest/index.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>REST Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
JSON 配列を作成する際に追加の要件はありますか?