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