我有一个类,它有一些字符串列表,我想通过杰克逊进行编组。为了更好地使用,我希望在每个元素列表中都有相同的元素名称。所以我这样注解:
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:表示属性"text“的多个字段。我也尝试过,但没有效果:
// mapper instanceof com.fasterxml.jackson.dataformat.xml.XmlMapper
mapper.configure(MapperFeature.USE_WRAPPER_NAME_AS_PROPERTY_NAME, true);我还需要什么?
发布于 2020-04-06 08:57:01
这不是一个完美的解决方案,但是当我在一个新的类中分离列表本身并删除包装(因为它是由使用这种新类型的成员包装的)时,仍然是一个很好的解决方案:
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 );
}
}..。所以我的课看起来是:
public class MyClass
{
public String title;
public StringList hints;
public StringList warnings;
public StringList errors;
}https://stackoverflow.com/questions/60672582
复制相似问题