XML返回默认值而不是JSON rest服务

时间:2015-02-18 09:28:34

标签: java xml json rest jersey-2.0

我有一个支持返回XML和JSON的rest api,如下所示:

@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();
    }

如果没有定义Accept标头,上面将返回XML作为默认值。我想根据帖子@Produces annotation in JAX-RS返回JSON而不是,我改变了我的服务以提供质量因素。但是默认情况下会再次返回XML。 思考了一段时间后,我看到正在使用的Area类标有@XmlRootElement。这会导致问题吗?如果是,如何解决?如果没有,我如何将JSON作为默认值返回。

1 个答案:

答案 0 :(得分:3)

你可以试试这个

@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();
}