java – 缺少名称,处于状态:START_OBJECT使用Jackson解析XML
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 缺少名称,处于状态:START_OBJECT使用Jackson解析XML,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2773字,纯文字阅读大概需要4分钟。
内容图文
![java – 缺少名称,处于状态:START_OBJECT使用Jackson解析XML](/upload/InfoBanner/zyjiaocheng/774/9fe080c25b21443291e6da128f46bc82.jpg)
我正在尝试解析一些看起来像这样的XML:
<correlationMatrix>
<assetMatrix numAssets="45">
<correlations asset="Name1" />
<correlations asset="Name2">
<correlation asset="Name3">1.23</correlation>
</correlations>
<correlations asset="Name4">
<correlation asset="Name5">2.34</correlation>
<correlation asset="Name6">3.45</correlation>
</correlations>
</assetMatrix>
</correlationMatrix>
我创建了3个类:
@JsonIgnoreProperties(ignoreUnknown = true)
public class CorrelationMatrix {
private List<Correlations> assetMatrix;
public List<Correlations> getAssetMatrix() {
return assetMatrix;
}
public void setAssetMatrix(List<Correlations> assetMatrix) {
this.assetMatrix = assetMatrix;
}
}
和
@JsonIgnoreProperties(ignoreUnknown = true)
public class Correlations {
private String asset;
private List<Correlation> correlation;
public String getAsset() {
return asset;
}
public void setAsset(String asset) {
this.asset = asset;
}
public List<Correlation> getCorrelation() {
return correlation;
}
public void setCorrelations(List<Correlation> correlation) {
this.correlation = correlation;
}
}
然后最后
@JsonIgnoreProperties(ignoreUnknown = true)
public class Correlation {
}
正如您所看到的,我已从最终的内部类中删除了所有内容,但仍无法解析.我已经尝试删除< correlations asset =“Name1”/>从输入,但这不是问题的根源.如果我删除私??人列表< Correlation>相关;从Correlations然后然后成功解析,但显然没有我需要的信息.
我需要做什么不同的事情来解析使用Jackson(2.2.0,如果重要的话)从XML到Java的本质上是一个二维数组?
我得到的错误是:
Missing name, in state: START_OBJECT (through reference chain: CorrelationMatrix["assetMatrix"]->Correlations["correlation"])
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(
更新:
这个问题似乎与相关内部的值有关.如果我从我的示例数据中删除1.23,2.34和3.45然后它解析 – 所以我需要以某种方式告诉Jackson如何映射它们.
解决方法:
我能够使用这些修改过的类解析示例xml中的所有元素(添加getter,setter并在Correlations中使用正确的名称setCorrelation):
class CorrelationMatrix {
private AssetMatrix assetMatrix;
}
class AssetMatrix {
@JacksonXmlProperty(isAttribute = true)
private int numAssets;
@JacksonXmlElementWrapper(useWrapping = false)
private List<Correlations> correlations;
}
class Correlations {
@JacksonXmlProperty(isAttribute = true)
private String asset;
@JacksonXmlElementWrapper(useWrapping = false)
private List<Correlation> correlation;
}
class Correlation {
@JacksonXmlProperty(isAttribute = true)
private String asset;
@JacksonXmlText
private double correlation;
}
>我在任何地方都不需要@JsonIgnoreProperties(ignoreUnknown = true)
>资产和numAssets等属性需要@JacksonXmlProperty(isAttribute = true)
> xml中有两种类型的列表都已解包,因此使用此@JacksonXmlElementWrapper指定它(useWrapping = false)
>您可以使用此@JacksonXmlText解析最里面的双数字,尽管Java中的字段不是文本.
>我介绍了一个包装类AssetMatrix来捕获numAssets
内容总结
以上是互联网集市为您收集整理的java – 缺少名称,处于状态:START_OBJECT使用Jackson解析XML全部内容,希望文章能够帮你解决java – 缺少名称,处于状态:START_OBJECT使用Jackson解析XML所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。