XML-формат ответа в dropwizard - PullRequest
0 голосов
/ 17 сентября 2018

Я хочу формат 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>

я получаю ответ, подобный этому, но я хочу ответ, подобный

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response>
<list>
  <item>
      <name>Mango</name>
      <qty>2kg</qty>
      <rate>60.00</rate>
  </item>
</list>
</response>

POJO

@XmlRootElement(name ="response")
public class Fruit {    
private String name;
private String qty;
private String rate;
public GetSellerBuyerCode(String name, String qty, String rate) {
    this.name=name;
    this.qty=qty;
    this.rate=rate;     
}
@XmlElement
public String getName() {
    return name;
}
@XmlElement
public String getQty() {
    return qty;
}
@XmlElement
public String getRate() {
    return rate;
}   
}

Код контроллера:

@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, но имя класса идет как корневой элемент. Кто-нибудь может сказать, как этого избежать. и я использую dropwizard 1.1.2 и Джерси 2.25.1

1 Ответ

0 голосов
/ 17 сентября 2018

Ниже решение работает для меня, не пробовал с 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;
}   
}
...