Java dropwizard中的xml响应格式

Java dropwizard中的xml响应格式,java,xml,jersey,dropwizard,Java,Xml,Jersey,Dropwizard,我希望xml和json格式都适用于单个api。 我的问题是xml <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Fruits> <response> <name>Mango</name> <qty>2kg</qty> <rate>60.00</rate> </response

我希望xml和json格式都适用于单个api。 我的问题是xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Fruits>
   <response>
     <name>Mango</name>
     <qty>2kg</qty>
     <rate>60.00</rate>
   </response>
   <response>
     <name>Banana</name>
     <qty>2kg</qty>
     <rate>80.00</rate>
   </response>
</Fruits>
控制器代码:

@Path("/Fruits")
@POST
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public Response getSellersBySellerCodeDet() {
    List<Fruit> list = new ArrayList<Fruit>();      
    list = buyDAO.getFruits();
    return Response.ok(new GenericEntity<List<Fruit>>(list) {}).build();
}
@Path(“/Fruits”)
@职位
@产生({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
公众响应getSellersBySellerCodeDet(){
列表=新的ArrayList();
list=buyDAO.getFruits();
返回Response.ok(newgenericentity(list){}).build();
}

我尝试了@XmlRootElement,但类名是根元素。有谁知道如何避免这种情况。我正在使用dropwizard 1.1.2和jersey 2.25.1,下面的解决方案对我很有效,没有使用dropwizard,只使用Jaxb

你能检查一下吗

@XmlRootElement(name="Response")
@XmlAccessorType(XmlAccessType.FIELD)
class FruitList{

@XMLElement(name="item")
private ArrayList<Fruit> list;

public ArrayList<Fruit> getList() {
return list;
}

public void setList(ArrayList<Fruit> list) {
this.list = list;
}

}


public class Fruit {  
@XmlElement(name="name")

private String name;
@XmlElement(name="qty")
private String qty;
@XmlElement(name="rate")
private String rate;

public Fruit () {

}

public Fruit (String name, String qty, String rate) {
    this.name=name;
    this.qty=qty;
    this.rate=rate;     
}
public String getName() {
    return name;
}

public String getQty() {
    return qty;
}

public String getRate() {
    return rate;
}   
}
@XmlRootElement(name=“Response”)
@XmlAccessorType(XmlAccessType.FIELD)
类结果表{
@xmlement(name=“item”)
私有数组列表;
公共ArrayList getList(){
退货清单;
}
公共无效集合列表(ArrayList列表){
this.list=列表;
}
}
公营水果{
@xmlement(name=“name”)
私有字符串名称;
@xmlement(name=“数量”)
私有字符串数量;
@xmlement(name=“rate”)
私有字符串速率;
公众水果(){
}
公共水果(串名称、串数量、串比率){
this.name=name;
该数量=数量;
这个比率=比率;
}
公共字符串getName(){
返回名称;
}
公共字符串getQty(){
退货数量;
}
公共字符串getRate(){
回报率;
}   
}

@6504267 am使用genericEntity获取XML响应。正如我上面提到的。当我使用水果列表而不是水果时,我遇到了一个错误。
@Path("/Fruits")
@POST
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public Response getSellersBySellerCodeDet() {
    List<Fruit> list = new ArrayList<Fruit>();      
    list = buyDAO.getFruits();
    return Response.ok(new GenericEntity<List<Fruit>>(list) {}).build();
}
@XmlRootElement(name="Response")
@XmlAccessorType(XmlAccessType.FIELD)
class FruitList{

@XMLElement(name="item")
private ArrayList<Fruit> list;

public ArrayList<Fruit> getList() {
return list;
}

public void setList(ArrayList<Fruit> list) {
this.list = list;
}

}


public class Fruit {  
@XmlElement(name="name")

private String name;
@XmlElement(name="qty")
private String qty;
@XmlElement(name="rate")
private String rate;

public Fruit () {

}

public Fruit (String name, String qty, String rate) {
    this.name=name;
    this.qty=qty;
    this.rate=rate;     
}
public String getName() {
    return name;
}

public String getQty() {
    return qty;
}

public String getRate() {
    return rate;
}   
}