如何解决XStream 反序列化简单的 XML 不断给出错误,说它应该创建集合时没有这样的字段
正在尝试将以下 xml 转换为 java 对象...
<?xml version="1.0" encoding="utf-8"?>
<layertypes>
<layertype id="layer_1" label="first" />
<layertype id="layer_2" label="Second" />
</layertypes>
使用这些类:
@XStreamAlias("layertype")
public class LayerType {
@XStreamAsAttribute
private String id;
@XStreamAsAttribute
private String label;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
}
和
@XStreamAlias("layertypes")
public class LayerTypes {
@XStreamImplicit(itemFieldName = "layertype")
private List<LayerType> layertypes = new ArrayList<>();
public List<LayerType> getLayertypes() {
return layertypes;
}
public void setLayertypes(List<LayerType> layertypes) {
this.layertypes = layertypes;
}
}
从这里调用这些类和 xstream:
XStream xstream = new XStream();
xstream.processAnnotations(LayerType.class);
xstream.processAnnotations(LayerTypes.class);
LayerTypes layerTypes = (LayerTypes) xstream.fromXML(inputStream);
我明白了:
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field xbeans.LayerTypes.layertype
---- Debugging information ----
message : No such field xbeans.LayerTypes.layertype
field : layertype
class : xbeans.LayerTypes
required-type : xbeans.LayerTypes
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path : /layertypes/layertype
line number : 3
version : 1.4.15
-------------------------------
知道我做错了什么吗?单步调试调试器就像 Xstream 找不到或没有隐式集合的映射器。这似乎应该很简单,我已经尝试按照我找到的所有教程进行操作。然而总是这个错误。
解决方法
好吧……我没有做错任何事。 Spring Boot Dev Tools 是如何破坏它的。 Error using XStream in Spring context: DuplicateFieldException
类似的问题不同的例外(尽管这两个例外都无关紧要且具有误导性)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。