gpt4 book ai didi

java - 带有 java.lang.Object 字段的 JAXB 编码对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:21:06 25 4
gpt4 key购买 nike

我正在尝试编码一个对象,该对象的字段之一是对象。

@XmlRootElement
public class TaskInstance implements Serializable {
...
private Object dataObject;
...
}

dataObject 可以是许多不同的未知 类型之一,因此在某处指定每个类型不仅不切实际而且不可能。当我尝试编码该对象时,它说该类不为上下文所知。

MockProcessData mpd = new MockProcessData();
TaskInstance ti = new TaskInstance();
ti.setDataObject(mpd);

String ti_m = JAXBMarshall.marshall(ti);

“此上下文已知 MockProcessData 或其任何父类(super class)。”是我得到的。

有什么办法解决这个错误吗?

最佳答案

JAXB 无法编码任何旧对象,因为它不知道如何编码。例如,它不知道要使用什么元素名称。

如果您需要处理这种通配符,唯一的解决方案是将对象包装在 JAXBElement 对象中,该对象包含足够的信息供 JAXB 编码为 XML。

尝试这样的事情:

QName elementName = new QName(...); // supply element name here
JAXBElement jaxbElement = new JAXBElement(elementName, mpd.getClass(), mpd);
ti.setDataObject(jaxbElement);

关于java - 带有 java.lang.Object 字段的 JAXB 编码对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2269494/

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