gpt4 book ai didi

java - 隐式集合的 XStream 问题

转载 作者:行者123 更新时间:2023-12-01 04:42:53 25 4
gpt4 key购买 nike

我有以下 XML:

<appConfig>
<database isSource="true" fizz="129"/>
<database isSource="false" fizz="29494" />
<buzz bee="always" />
</appConfig>

这应该映射到以下 POJO:

public class AppConfig {
private Database sourceDb;
private Database targetDb;
private Buzz buzz;
}

public class Database {
// Omitted for brevity...
}

public class Buzz {
// Omitted for brevity...
}

并配置了以下XStream映射器:

XStream oxMapper = new XStream();
oxMapper.alias("appConfig", AppConfig.class);
oxMapper.alias("database", Database.class);
oxMapper.alias("buzz", Buzz.class);

像这样读取和反序列化 XML:

ApplicationConfig appCfg = (ApplicationConfig)oxMapper.fromXML(
getXMLSnippet());

但我收到此错误:

Element database of type com.myapp.Database is not defined as field in type com.myapp.AppConfig

我读到this article其中讨论了隐式集合,并且相信 XStream 认为我的两个 Database 项是列表(隐式集合)的一部分,而实际上它们不是(它们应该映射到2 个不同的 AppConfig 属性)。

我该如何解决这个问题?提前致谢!

最佳答案

您必须通过字段的名称设置别名,而不是类型。对于您的示例,它应该是:

oxMapper.alias("sourceDb", Database.class);
oxMapper.alias("targetDb", Database.class);
oxMapper.alias("buzz", Buzz.class);

关于java - 隐式集合的 XStream 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16264177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com