【发布时间】:2018-06-22 03:14:40
【问题描述】:
我正在尝试解析一些如下所示的 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" />,但这不是问题的根源。如果我从 Correlations 中删除 private List<Correlation> correlation;,那么它会成功解析,但显然没有我需要的信息。
我需要在这里做些什么不同的事情来使用 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(
更新:
问题似乎与correlation 中的值有关。如果我从示例数据中删除 1.23、2.34 和 3.45,那么它会解析 - 所以我需要以某种方式告诉 Jackson 如何映射它们。
【问题讨论】: