要启用杰克逊JAXB注解的支持,你需要包括这种依赖性杰克逊2.5.3:在您的XmlMapper
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
<version>2.4.0</version>
</dependency>
注册JaxbAnnotationModule模块。
XmlMapper xmlMapper = new XmlMapper();
JaxbAnnotationModule module = new JaxbAnnotationModule();
xmlMapper.registerModule(module);
杰克逊2.5.3产生这个XML:
<ROOT xmlns="">
<aString/>
<bString/>
</ROOT>
杰克逊2.9.0产生这个XML:
<ROOT>
<aString/>
<bString/>
</ROOT>
借此进一步渲染就像你贴,你需要自定义序列化。
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
class EmptySerializer extends JsonSerializer<Object> {
@Override
public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
jgen.writeString("");
}
}
并与你的映射器注册此:
XmlSerializerProvider provider = new XmlSerializerProvider(new XmlRootNameLookup());
provider.setNullValueSerializer(new EmptySerializer());
xmlMapper.setSerializerProvider(provider);
这将产生你想要的格式。
<ROOT>
<aString></aString>
<bString></bString>
</ROOT>
感谢您了help.My问题是,大多数的时间从豆到XML的searialization是正确的,但偶尔根标签的名字是错的类名称,而不是@XmlRootElement的定义。当JVM运行一段时间后,发生错误,重启JVM后,问题消失。 – phpinfo