如何解决XmlMapper 反序列化器只获取列表的最后一个元素值
<unit><Labels><label>1.5</label><label>2.1</label></Labels></unit>
反序列化。使用的库是:jackson-dataformat-xml。 我遇到的问题是只提取列表的最后一个元素 2.1。
POJO 类定义如下:
@JacksonXmlRootElement(localName = "unit")
public class UnitModel implements Serializable {
@JacksonXmlElementWrapper(localName = "Labels")
@JacksonXmlProperty(localName = "Label")
private List<LabelModel> labels;
// normal setters and getters
@JsonDeserialize(using = LabelDeserializer.class)
public List<LabelModel> getLabels() {
return labels;
}
public void setLabels(List<LabelModel> labels) {
this.labels = labels;
}
}
@JacksonXmlRootElement(localName = "Labels")
public class LabelModel {
@JacksonXmlProperty(localName = "Label")
private String value;
}
public class LabelDeserializer extends JsonDeserializer<List<LabelModel>> {
@Override
public List<LabelModel> deserialize(final JsonParser p,final DeserializationContext ctxt)
throws IOException {
final ObjectCodec objectCodec = p.getCodec();
final JsonNode listOrObjectNode = objectCodec.readTree(p);
final List<LabelModel> result = new ArrayList<>();
if (listOrObjectNode.isArray()) {
for (JsonNode node : listOrObjectNode) {
result.add(objectCodec.treeTovalue(node,LabelModel.class));
}
} else {
result.add(objectCodec.treeTovalue(listOrObjectNode,LabelModel.class));
}
return result;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。