XML字符串
一个profilesBatch包含一个profilesList
profilesList包含一个或多个配置文件。
配置文件包含1 useRestrictions
<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>类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;
}类ProfileList
@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;
}类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;
}我正在使用spring和jackson-dataformat-xml。做的时候
XmlMapper xmlMapper = new XmlMapper();
ProfilesBatch profilesBatch = xmlMapper.readValue(data, ProfilesBatch.class);其中数据是xml字符串。
越来越多
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:Unrecognized field "maximumDownloadAttempts" (class sm.movasim.sftp.service.espgmodel.Profile), not marked as ignorable这些类和注释有什么问题吗?注意,所有类都有setter和getter。
发布于 2020-12-18 08:02:12
修改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以避免它。
发布于 2020-12-18 08:09:04
您实际上不需要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;您不需要对象的包装注释。
https://stackoverflow.com/questions/65353132
复制相似问题