0
我正在運行一個使用spring的webapp,我使用xstream作爲序列化工具。 我已經定義了一個marsheller來包含自定義轉換器,但是當讀取一個xml時,似乎我註冊的轉換器被忽略,因爲xstream不能正確解析某些字段。Xstream忽略已註冊的轉換器
這裏是編組的初始化函數:
public void init() {
XStream xstream = new XStream() {
protected MapperWrapper wrapMapper(MapperWrapper next) {
return new MapperWrapper(next) {
public boolean shouldSerializeMember(Class definedIn, String fieldName) {
return definedIn != Object.class ? super.shouldSerializeMember(definedIn, fieldName) : false;
}
};
}
};
xstream.setMode(XStream.NO_REFERENCES);
xstream.addDefaultImplementation(ArrayList.class, PersistentList.class);
xstream.addDefaultImplementation(ArrayList.class, PersistentBag.class);
xstream.addDefaultImplementation(HashMap.class, PersistentMap.class);
xstream.addDefaultImplementation(java.util.HashSet.class, PersistentSet.class);
xstream.alias("Array", PersistentBag.class);
xstream.alias("list", PersistentBag.class);
Mapper mapper = xstream.getMapper();
xstream.registerConverter(new HibernateCollectionConverter(mapper));
xstream.registerConverter(new HibernateMapConverter(mapper));
xstream.registerConverter(new DateConverter());
xstream.registerConverter(new TimeStampCustomConverter());
xstream.registerConverter(new LongConverter());
xstream.registerConverter(new IntConverter());
xstream.registerConverter(new DoubleConverter());
}
我失去了什麼?
此代碼似乎建立了一個'XStream'實例,但然後把它扔掉。你是否保存了一個對'XStream'對象的引用,而不是在你的本地變量中? –
@Ian,你是對的......我改變了我得到xstream的方式來覆蓋函數,謝謝!請提交此作爲答案,我可以接受它 –
完成。謝謝,很高興它有幫助。 –