要啓用傑克遜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