Ich habe eine 'Order'-Klasse, die eine Liste von Objekten der Klasse' Triplet 'enthält. Wenn ich versuche, ein Auftragsobjekt im XML-Format zu bekommen, bekomme ich alle anderen Daten richtig, außer dies. Es folgt der Code-Schnipsel:Objekte in der Liste, die nicht in XML konvertiert werden
Order.java:
@XmlRootElement
public class Order {
private String orderid;
private String orderStatus;
private String paidStatus;
private String address;
private double total;
private String emailid;
private String username;
private List<Triplet> movies=new ArrayList<>();
public Order(String orderid, String orderStatus, String paidStatus, String address, double total, String emailid,
String username) {
super();
this.orderid = orderid;
this.orderStatus = orderStatus;
this.paidStatus = paidStatus;
this.address = address;
this.total = total;
this.emailid = emailid;
this.username = username;
}
public Order(String orderid, String orderStatus, String paidStatus, String address, double total, String emailid,
String username, List<Triplet> movies) {
super();
this.orderid = orderid;
this.orderStatus = orderStatus;
this.paidStatus = paidStatus;
this.address = address;
this.total = total;
this.emailid = emailid;
this.username = username;
this.movies = movies;
}
public Order() {
super();
}
//getters and setters
public String getOrderid() {
return orderid;
}
public void setOrderid(String orderid) {
this.orderid = orderid;
}
public String getOrderStatus() {
return orderStatus;
}
public void setOrderStatus(String orderStatus) {
this.orderStatus = orderStatus;
}
public String getPaidStatus() {
return paidStatus;
}
public void setPaidStatus(String paidStatus) {
this.paidStatus = paidStatus;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
public String getEmailid() {
return emailid;
}
public void setEmailid(String emailid) {
this.emailid = emailid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public List<Triplet> getMovies() {
return movies;
}
public void setMovies(List<Triplet> movies) {
this.movies = movies;
}
public Order getObject(){
Order o=new Order();
o.setAddress("address1");
o.setEmailid("email");
o.setOrderid("orderid");
o.setOrderStatus("in process");
o.setPaidStatus("n");
o.setTotal(250.5);
o.setUsername("admin");
movies.add(new Triplet(1L,2,200.0));
movies.add(new Triplet(2L,3,150.0));
o.setMovies(movies);
return o;
}
}
Triplet.java:
@XmlRootElement
public class Triplet implements Serializable {
private long movieid;
private int quantity;
private double price;
public Triplet() {
super();
}
public Triplet(long movieid, int quantity, double price) {
this.movieid = movieid;
this.quantity = quantity;
this.price = price;
}
public long getMovieid() { return movieid; }
public int getQuantity() { return quantity; }
public double getPrice() { return price; }
}
OrderResource.java:
@Path("/orders")
public class OrderResource {
OrderService os=new OrderService();
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("/{emailid}")
public Order getOrderByCustomer(@PathParam("emailid") String emailid){
Order o=new Order();
return o.getObject();
}
}
Ausgang:
<order>
<address>address1</address>
<emailid>email</emailid>
<movies/>
<movies/>
<orderStatus>in process</orderStatus>
<orderid>orderid</orderid>
<paidStatus>n</paidStatus>
<total>250.5</total>
<username>admin</username>
</order>
Was kann getan werden, um in Filmen korrekte Werte zu erhalten?
bearbeiten
Das Problem war, dass die Liste des Objekts Triplet Klasse in Order-Objekt wurde nicht in XML umgewandelt zu werden.
Um dieses Problem zu lösen, funktioniert das Hinzufügen einer Anmerkung - @XmlAccessorType (XmlAccessType.FIELD) zur Triplet-Klasse wie im EDIT-Teil der Antwort von dsp_user erwähnt.
Ich habe keine Getter Setter gezeigt, um es nicht sperrig zu machen. Dies ist nicht die ganze Klasse. Meine gesamte Bestellklasse ist: –
Haben Sie meinen Vorschlag versucht? –
Ich bearbeite meine Frage zum ursprünglichen Code. Ich habe bereits die Setter und Getter. –