XML returns 作为默认值而不是 JSON 休息服务
XML returns as default instead of JSON rest service
我有一个休息 api 支持 returning XML 和 JSON 如下:
@GET
@Path("/areas/city/{cityId}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public Response getAreaByCity(@PathParam("cityId") String cityId) {
List<Area> areaList = //service call to get area
GenericEntity<List<Area>> areaEntityList = new GenericEntity<List<Area>>(areaList) {};
return Response.ok(areaEntityList).build();
}
上面的return是默认的XML如果没有Acceptheader是defined.I想要returnJSON代替..so根据 post @Produces annotation in JAX-RS,我更改了服务以提供质量因素。但同样 XML 默认为 returned。
想了想,看到正在使用的Area
class被标记为@XmlRootElement
。这会引起问题吗?如果是,如何解决?如果不是,我怎么能return JSON as default.
你可以试试这个
@POST
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response post(Student s,@HeaderParam("Accept") String accept){
if(accept!=null && accept.contains(MediaType.APPLICATION_XML)){
accept = MediaType.APPLICATION_XML;
}else{
accept = MediaType.APPLICATION_JSON;
}
//Construct list
Response.ok(list, accept).build();
}
我有一个休息 api 支持 returning XML 和 JSON 如下:
@GET
@Path("/areas/city/{cityId}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public Response getAreaByCity(@PathParam("cityId") String cityId) {
List<Area> areaList = //service call to get area
GenericEntity<List<Area>> areaEntityList = new GenericEntity<List<Area>>(areaList) {};
return Response.ok(areaEntityList).build();
}
上面的return是默认的XML如果没有Acceptheader是defined.I想要returnJSON代替..so根据 post @Produces annotation in JAX-RS,我更改了服务以提供质量因素。但同样 XML 默认为 returned。
想了想,看到正在使用的Area
class被标记为@XmlRootElement
。这会引起问题吗?如果是,如何解决?如果不是,我怎么能return JSON as default.
你可以试试这个
@POST
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response post(Student s,@HeaderParam("Accept") String accept){
if(accept!=null && accept.contains(MediaType.APPLICATION_XML)){
accept = MediaType.APPLICATION_XML;
}else{
accept = MediaType.APPLICATION_JSON;
}
//Construct list
Response.ok(list, accept).build();
}