एक्सएमएल स्ट्रिंग
एक प्रोफाइलबैच में 1 प्रोफाइल हैसूची
प्रोफ़ाइल सूची में एक या अधिक प्रोफ़ाइल शामिल हैं
एक प्रोफ़ाइल में 1 उपयोग प्रतिबंध हैं
<profilesBatch version="1.0" id="745" date="2012-12-13" transportKeyLabel="str1234">
<profilesList>
<profile iccid="str1234" profileType="str1234">
<useRestrictions>
<maximumDownloadAttempts>745</maximumDownloadAttempts>
<maximumConfirmationAttempts>745</maximumConfirmationAttempts>
<maximumNumberEIDs>745</maximumNumberEIDs>
<maximumDownloadsPerEID>745</maximumDownloadsPerEID>
<allowDownloadForDownloaded>true</allowDownloadForDownloaded>
<allowDownloadForInstalled>true</allowDownloadForInstalled>
<allowDownloadForError>true</allowDownloadForError>
</useRestrictions>
</profile>
</profilesList>
</profilesBatch>
कक्षा प्रोफाइलबैच
@Getter
@Setter
@XmlRootElement(name = "ProfilesBatch")
public class ProfilesBatch
{
@JacksonXmlProperty(isAttribute = true)
private String date;
@JacksonXmlElementWrapper(localName="profilesList")
@JacksonXmlProperty(localName="profilesList")
private ProfilesList profilesList;
@JacksonXmlProperty(isAttribute = true)
private String transportKeyLabel;
@JacksonXmlProperty(isAttribute = true)
private Header header;
@JacksonXmlProperty(isAttribute = true)
private String id;
@JacksonXmlProperty(isAttribute = true)
private String version;
}
वर्ग प्रोफ़ाइलसूची
@Getter
@Setter
@XmlRootElement(name = "ProfilesList")
public class ProfilesList
{
@JacksonXmlElementWrapper(localName="profile")
@JacksonXmlProperty(localName="profile")
private List<Profile> profile;
}
कक्षा प्रोफ़ाइल
@Getter
@Setter
@XmlRootElement(name = "Profile")
public class Profile
{
@JacksonXmlProperty(isAttribute = true)
private String iccid;
@JacksonXmlProperty(isAttribute = true)
private String profileType;
@JacksonXmlElementWrapper(localName="useRestrictions")
private UseRestrictions useRestrictions;
}
कक्षा उपयोग प्रतिबंध
@Getter
@Setter
@XmlRootElement(name = "useRestrictions")
public class UseRestrictions {
@JacksonXmlProperty(localName = "maximumDownloadAttempts")
private int maximumDownloadAttempts;
@JacksonXmlProperty(localName = "maximumNumberEIDs")
private int maximumNumberEIDs;
@JacksonXmlProperty(localName = "maximumConfirmationAttempts")
private int maximumConfirmationAttempts;
@JacksonXmlProperty(localName = "maximumDownloadsPerEID")
private int maximumDownloadsPerEID;
@JacksonXmlProperty(localName = "allowDownloadForInstalled")
private boolean allowDownloadForInstalled;
@JacksonXmlProperty(localName = "allowDownloadForDownloaded")
private boolean allowDownloadForDownloaded;
@JacksonXmlProperty(localName = "allowDownloadForError")
private boolean allowDownloadForError;
}
मैं जैक्सन-डेटाफॉर्मेट-एक्सएमएल के साथ स्प्रिंग-बूट का उपयोग कर रहा हूं। करते समय
XmlMapper xmlMapper = new XmlMapper();
ProfilesBatch profilesBatch = xmlMapper.readValue(data, ProfilesBatch.class);
जहां डेटा एक्सएमएल स्ट्रिंग है
मिल रहा है
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:Unrecognized field "maximumDownloadAttempts" (class sm.movasim.sftp.service.espgmodel.Profile), not marked as ignorable
क्या कक्षाओं और टिप्पणियों में कुछ गड़बड़ है? ध्यान दें कि सभी वर्गों को सेटर्स और गेटर्स मिलते हैं
2 जवाब
अपनी ProfilesList
कक्षा में बदलाव करें
@Getter
@Setter
@XmlRootElement(name = "ProfilesList")
public static class ProfilesList {
@JacksonXmlElementWrapper(localName = "profile", useWrapping = false)
@JacksonXmlProperty(localName = "profile")
private List<Profile> profile;
}
कारण: डिफ़ॉल्ट @JacksonXmlElementWrapper
को एक रैपर टैग की आवश्यकता है => आपकी <profile>
सूची को दूसरे <profile></profile>
स्तर में लपेटने की आवश्यकता है, इससे बचने के लिए useWrapping = false
सेट करें।
आपको वास्तव में ProfileList वर्ग की आवश्यकता नहीं है।
इन एनोटेशन के साथ सीधे ProfileBatch वर्ग में सूची रखें:
@XmlRootElement(name = "ProfilesBatch")
public class ProfilesBatch
{
@JacksonXmlElementWrapper(localName="profilesList")
@JacksonXmlProperty(localName="profile")
private List<Profile> profilesList;
इसके अलावा, एक तरफ ध्यान दें, प्रोफ़ाइल वर्ग में UseRestrictions को एनोटेट किया जा सकता है
@JacksonXmlProperty(localName="useRestrictions")
private UseRestrictions useRestrictions;
आपको ऑब्जेक्ट्स के लिए रैपर एनोटेशन की आवश्यकता नहीं है।
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।