问题描述
<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 (将#修改为@)