我有一个类,其中有一些我想通过 Jackson 进行编码的字符串列表。为了更好地使用,我想在每个列表中列出相同的元素名称。所以我这样注释:
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
public class MyClass
{
public String title;
@XmlElementWrapper(name="hints")
@XmlElement(name="text")
public List<String> hints;
@XmlElementWrapper(name="warnings")
@XmlElement(name="text")
public List<String> warnings;
@XmlElementWrapper(name="errors")
@XmlElement(name="text")
public List<String> errors;
}
但在运行时我遇到异常无法编写 JSON:表示属性“文本”的多个字段。我也试过了,没有效果:
// mapper instanceof com.fasterxml.jackson.dataformat.xml.XmlMapper
mapper.configure(MapperFeature.USE_WRAPPER_NAME_AS_PROPERTY_NAME, true);
我还需要什么?
最佳答案
不是一个完美的解决方案,但当我将列表本身分离到一个新类中并删除包装时仍然是一个很好的解决方法(因为它是由使用这种新类型的成员包装的):
public class StringList
{
@JacksonXmlElementWrapper(useWrapping = false)
@XmlElement(name="text")
public final List<String> list = new ArrayList<String>();
public void add( String msg )
{
list.add( msg );
}
}
...所以我的类(class)将如下所示:
public class MyClass
{
public String title;
public StringList hints;
public StringList warnings;
public StringList errors;
}
关于java - 具有相同 @XmlElement 但不同 @XmlElementWrapper 的 XmlMapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60672582/