我序列化包含枚舉作爲一個字段類枚舉時指定一個別名,讓說:如何採用序列西河
private class DayOfWeekSet {
private final EnumSet<DayOfWeek> days;
}
public enum DayOfWeek implements Serializable {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY;
}
枚舉的西河輸出是:
<days>
<day enum-type="com.company.model.DayOfWeek">MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY</day>
</days>
,我想是這樣的:
<days>
<day>MONDAY</day>
<day>TUESDAY</day>
<day>WEDNESDAY</day>
<day>THURSDAY</day>
<day>FRIDAY</day>
<day>SATURDAY</day>
<day>SUNDAY</day>
</days>
我發現@XStreamImplicit(itemFieldName = 「名稱」)annotattion在XStream文檔,但它僅適用於集合。
是否有可能做到這一點與註釋還是我需要創建一個轉換器?
爲了得到我描述了我創建了以下轉換器之前的結果:
public class XstreamDayOfTheWeekEnumConverter implements Converter {
@Override
@SuppressWarnings("rawtypes")
public boolean canConvert(Class type) {
return type.equals(DayOfWeekSet.class);
}
@Override
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
DayOfWeekSet set = (DayOfWeekSet) source;
for (Iterator<DayOfWeek> iterator = set.getDays().iterator(); iterator.hasNext();) {
Enum<DayOfWeek> value = iterator.next();
writer.startNode("day");
writer.setValue(value.name());
writer.endNode();
}
}
@Override
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
//Not implemented
return null;
}
}
有沒有什麼辦法讓從XStream的別名註釋(@XStreamAlias)節點名稱,如果我註釋的枚舉它?
我已經創建了一個轉換器和正常工作......我仍然對如何獲得的節點名稱有些疑惑。 – yeforriak 2010-09-29 14:21:47