我使用Jackson 2.2.2和JAXB註釋類。我想枚舉序列化爲int數字。由於XML(因爲我希望XML的行爲也一樣),所以有必要使用@XmlEnumValue等等。一切正常。 對於序列化到JSON這個註釋根據Jackson的文檔支持,但到目前爲止沒有運氣使它適用於JSON(XML很好)。無法使用@XmlEnumValue序列化使用Jackson和Jaxb註釋的枚舉
@XmlType(name = "Period")
public enum Period {
@XmlEnumValue("11")
DAILY("Daily"),
@XmlEnumValue("1")
WEEKLY("Weekly"),
@XmlEnumValue("2")
SEVENTH_DAY("3");
private final String value;
...
生產JSON看起來還是以下幾點:
"OvertimeRates": {
"DAILY": [
{
"AfterHours": -19497,
"Rate": 3.7003279564106983
}
]
},
雖然我預料,而不是DAILY我會看到11
我的代碼:
mapper = new ObjectMapper();
JaxbAnnotationModule jaxbAnnotationModule = new JaxbAnnotationModule();
mapper.registerModule(jaxbAnnotationModule);
mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
// mapper.configure(SerializationFeature.WRITE_ENUMS_USING_INDEX, false);
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
final PosData posData = dataGenerator.getPosData();
try {
mapper.writeValue(new File(PATH_TO_FILE), posData);
} catch (IOException e) {
e.printStackTrace();
}
我試圖嘗試與mapper.configure(SerializationFeature.WRITE_ENUMS_USING_INDEX,false);但那也沒有幫助。
任何想法我錯過了什麼?
鉭
它的作品相當不錯,當你的枚舉是一個類中的屬性,例如。在你的場景中,期間是地圖中的關鍵或類似的東西。你能改變你的POJO類或JSON嗎?如果否,可能需要在映射序列化器上編寫自己的關鍵序列化程序。 –