我正在嘗試使用解組來創建使用 xml 字串的物件。這是我正在使用的代碼。但是我無法獲得不在駝峰式大小寫中的引數(MemResponse)的值,其余引數設定正確。
早些時候我沒有使用 jsonproperty 注釋,我在谷歌上搜索了這個問題并了解了這個注釋。但是,使用注解后也。MemResponse 欄位仍為空值。
JAXBContext jc = JAXBContext.newInstance(Transaction.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
StreamSource streamSource = new StreamSource(new StringReader(content));
JAXBElement<Transaction> jaxbElement = unmarshaller.unmarshal(streamSource, Transaction.class);
事務類如下
public class Transaction
{
private String transType;
private String xmlDate;
private String source;
private String xmlVersion;
@JsonProperty("MemResponse")
private MemResponse MemResponse;
}
這是 MemResponse 類
public class MemResponse
{
@JsonProperty("DependantDetail")
private DependantDetail[] DependantDetail;
@JsonProperty("Telephone")
private Telephone Telephone;
@JsonProperty("Address")
private Address[] Address;
@JsonProperty("MemberDetail")
private MemberDetail MemberDetail;
}
這是我的 sml 字串
<Transaction>\n
<xmlVersion>1</xmlVersion>\n
<xmlDate>25/11/2011</xmlDate>\n
<source>MACROMOBI</source>\n
<transType>MEMDETAIL</transType>\n
<MemResponse>\n
<MemberDetail>\n
<joinDate>01/07/2007</joinDate>\n
<leftDate>31/01/2008</leftDate>\n
<employerCode></employerCode>\n
<depCount>2</depCount>\n
<langPref>ENG</langPref>\n
<nextMemberNo/>\n
<nextPlanCode/>\n
</MemberDetail>\n
<DependantDetail>\n
<depNum>01</depNum>\n
<initials>G</initials>\n
<depTitle>MR</depTitle>\n
<gender>M</gender>\n
<maritalStatus>S</maritalStatus>\n
<joinDate>01/07/2007</joinDate>\n
<leftDate>31/01/2008</leftDate>\n
<relation>SELF</relation>\n
<depType>PM</depType>\n
</DependantDetail>\n
<DependantDetail>\n
<depNum>02</depNum>\n
<initials>S</initials>\n
<depTitle>MRS</depTitle>\n
<birthDate>20/11/1944</birthDate>\n
<gender>F</gender>\n
<maritalStatus>S</maritalStatus>\n
<joinDate>01/07/2007</joinDate>\n
<benefitStart>01/07/2007</benefitStart>\n
<leftDate>31/01/2008</leftDate>\n
</DependantDetail>\n
<Telephone>\n
<contType>MVWORK</contType>\n
<dialCode> </dialCode>\n
<dialNum>5</dialNum>\n
<smsFlag/>\n
</Telephone>\n
<Address>\n
<contType>PM</contType>\n
<addr02>MORNINGSIDE</addr02>\n
<addr04/>\n
<town>MUTARE</town>\n
<postCode>0000</postCode>\n
</Address>\n
<Address>\n
<contType>RM</contType>\n
<addr02>MORNINGSIDE</addr02>\n
<addr03>MUTARE</addr03>\n
<addr04/>\n
<postCode>0000</postCode>\n
</Address>\n
</MemResponse>\n
</Transaction>\n

uj5u.com熱心網友回復:
您不能用于@JsonProperty反序列化您的事務物件,因為您正在處理 XML 并且@JsonProperty特定于 JSON。
相反,@XmlRootElement在您的Transaction類上添加注釋,并@XmlElement在所有欄位上添加注釋。下面是你的Transaction類應該是什么樣子,我會讓你對MemResponse其他類進行相同的更改:
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Transaction {
@XmlElement
private String transType;
@XmlElement
private String xmlDate;
@XmlElement
private String source;
@XmlElement
private String xmlVersion;
@XmlElement(name = "MemResponse")
private MemResponse memResponse;
}
如果元素名稱與欄位名稱匹配,則不必name在@XmlElement注釋內指定。但是,作為示例,我為memResponse欄位指定了首字母小寫字母,以符合欄位的 Java 命名約定,并指定這應該MemResponse在注釋中使用元素名稱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/396659.html
下一篇:如何在Xbase中宣告一個函式
