gpt4 book ai didi

java - 使用 MOXy 将 JsonObject 属性映射到 XML

转载 作者:行者123 更新时间:2023-11-30 08:58:00 25 4
gpt4 key购买 nike

我有以下类(class)

@XmlRootElement(name = "Root")
class MyClass {

@XmlElement(name = "Entries")
JsonObject getProperty() { ... }
}

我想在编码后得到以下 XML 输出:

<Root>
<Entries>
<Entry>
<Name>Age</Name>
<Value>35</Value>
</Entry>
<Entry>
<Name>Email</Name>
<Value>test@gmail.com</Value>
</Entry>
</Entries>
</Root>

假设 getProperty() 返回的 JSON 是:

{ "Age": 35, "Email": "test@gmail.com"}

我试图创建一个辅助类 XmlJsonEntry

@XmlAccessType(XmlAccessType.FIELD)
@XmlRootElement(name = "Entry")
class XmlJsonEntry {
@XmlElement
public String Name;
@XmlElement
public String Value;
}

并如下扩展 XmlAdapter:

public static class JsonXmlAdapter extends XmlAdapter<XmlJsonEntry[], JsonObject>
{

@Override
public XmlJsonEntry[] marshal(JsonObject v) throws Exception
{
List<XmlJsonEntry> entries = new ArrayList<XmlJsonEntry>();
for (Entry<String,JsonElement> e : v.entrySet())
{
entries.add(new XmlJsonEntry(e.getKey(),e.getValue().toString()));
}
return entries.toArray(new XmlJsonEntry[entries.size()]);
}

@Override
public JsonObject unmarshal(XmlJsonEntry[] v) throws Exception
{ throw new Exception("Unmarshall not supported."); }

}

但这在编码期间抛出了一个异常:

Trying to get value for instance variable [name] of type [java.lang.String] from the object [[Lmy.app.$XmlJsonEntry;]. The specified object is not an instance of the class or interface declaring the underlying field`

我如何让它工作?是否有更简单的方法来实现这一目标?

最佳答案

代替:

public static class JsonXmlAdapter extends XmlAdapter<XmlJsonEntry[], JsonObject>

做:

public static class JsonXmlAdapter extends XmlAdapter<XmlJsonEntries, JsonObject>

然后有XmlJsonEntries具有类型为 List<XmlJsonEntry> 的映射属性.

关于java - 使用 MOXy 将 JsonObject 属性映射到 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27840110/

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