根据查询参数从JAX-RS方法返回JSON对象或字符串
问题描述:
我有一个JAX-RS servlet,我想返回一个用于GET查询的JSON对象到URL /upgrade/somePath
,但是String
用于GET查询到/upgrade/somePath?count=true
。我的问题是,此方法无法基于查询参数返回两种不同的类型。我试图将不同的方法映射到特定的URL @Path("/upgrade/somePath?count=true")
,但泽西并不乐意为此服务。根据查询参数从JAX-RS方法返回JSON对象或字符串
@Path("upgrade")
public class UpgradeMock
{
@GET
@Path("somePath")
@Produces(MediaType.APPLICATION_JSON)
public UpgradePackageList getPackages(@QueryParam("count") Boolean count)
答
据我所知,使用泽西岛无法实现此目的。如果这种工作方式是必须的(即规范),您应该更改方法以返回String
,并通过手动调用Jackson的JSON序列化程序将JSON序列化放到您的手中。
我想你应该根据那个神奇的查询参数来更改响应的Content-Type头。 – jabal 2012-03-01 10:35:19
为什么不使用第二个资源的路径'/ upgrade/somePath/count'? – 2012-03-01 10:36:41
好主意,这将是解决方案。我需要修改规范中的这些模式。 – tade 2012-03-01 12:11:33