2015-03-16 7 views
0

Java- Джерси клиент и Jersy JSON и XML связыванияJava XML-Java связывание @ XmlType.propOrder

ответ следующим образом

{"corp":"01105","rateCodeOffers":[{"rateCode":"!I","tosOffers":["MH0000010005"]}]} 

класса отображение

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = { 
"corp", 
"rateCodeOffers" 
}) 
@XmlRootElement(name = "corpRateCodeTosOffers") 
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) 
@JsonIgnoreProperties(ignoreUnknown=true) 
    public class CorpRcTosOffer implements Serializable { 

    @XmlElement(required = true) 
    private String corp; 

    @XmlElement(required = true) 
    private String errorMessage; 

    @XmlElement(required = true) 
    private String bRateCode; 

    @XmlElement(required = true) 
    private List<RatecodeTosOffers> rateCodeOffers; 

    @XmlElement(required = false) 
    private Map<String, List<TosConfirmSummary>> tosConfirmSummery; 

    ... getter and setters 
    } 

Java код для вызова

ClientResponse response = resource.accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON).post(ClientResponse.class, payload); 
response.getEntity(CorpRcTosOffer.class); 

I я получаю следующую ошибку b/c errorMessage/bRateCode/tosConfirmSummery не существует в ответ b/c, они являются необязательными, что я должен сделать, чтобы избавиться от следующей ошибки. я в порядке, чтобы получить только те значения, которые доступны в ответ.

javax.ws.rs.WebApplicationException: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 5 counts of IllegalAnnotationExceptions 
Property errorMessage is present but not specified in @XmlType.propOrder 
    this problem is related to the following location: 
     at private java.lang.String com.abc.app.CorpRcTosOffer.errorMessage 
     at com.abc.app.CorpRcTosOffer 
Property bRateCode is present but not specified in @XmlType.propOrder 
    this problem is related to the following location: 
     at private java.lang.String com.abc.app.CorpRcTosOffer.bRateCode 
     at com.abc.app.CorpRcTosOffer 
Property tosConfirmSummery is present but not specified in @XmlType.propOrder 
    this problem is related to the following location: 
     at private java.util.Map com.abc.app.CorpRcTosOffer.tosConfirmSummery 
     at com.abc.app.CorpRcTosOffer 
java.util.Map is an interface, and JAXB can't handle interfaces. 
    this problem is related to the following location: 
     at java.util.Map 
     at private java.util.Map com.abc.app.CorpRcTosOffer.tosConfirmSummery 
     at com.abc.app.CorpRcTosOffer 
java.util.Map does not have a no-arg default constructor. 
    this problem is related to the following location: 
     at java.util.Map 
     at private java.util.Map com.abc.app.CorpRcTosOffer.tosConfirmSummery 
     at com.abc.app.CorpRcTosOffer 

ответ

2

При указании propOrder вам нужно включить все отображенные поля/свойства, которые соответствуют элементу в нем. Это не имеет никакого отношения к присутствующему значению или нет, просто если это значение присутствует, то какой порядок будет отображаться в нем.

Вам нужно сделать, как указано в исключении, и добавить их в propOrder.

Property bRateCode is present but not specified in @XmlType.propOrder 
    this problem is related to the following location: 
     at private java.lang.String com.abc.app.CorpRcTosOffer.bRateCode 
     at com.abc.app.CorpRcTosOffer 

 Смежные вопросы

  • Нет связанных вопросов^_^