使用了xstream的序列化和反序列化,感覺效果不錯。
xstream支援好幾種方式的序列化(xml、json、bin),幾種方式都有其鮮明的優點:
1)xml方式最容易閱讀,且應用範圍比較廣。
2)json方式便於web上的傳輸
3)bin方式的效能最好,占用的空間也比較少
在反序列化時,由於類的結構發生變化導致一些屬性不存在了,可以通過下面的方式對於不存在的屬性予以忽略:
xstream序列化時會帶上類的全路徑,比較不好看也占用空間,可以通過別名的方式簡化
static
使用bin的方式序列化和反序列化物件:
public static final byte serialize(xstream xstream, object obj, boolean compress) else
}/**
* 從xml byte陣列中反序列化出乙個物件
* * @param bytes
* @return
*/public static final object deserialize(byte bytes, boolean decompress) else
bytearrayinputstream bis = new bytearrayinputstream(newbytes);
binarystreamreader bsr = new binarystreamreader(bis);
return deserialize_xstream.unmarshal(bsr);
}
xstream序列化通過反射來獲取物件屬性值,一方面反射效率相對較慢,另一方面不是所有的屬性都需要序列化。可以通過自己實現特定類的序列化來提高效率。
public class datasetserializer implements converter }}
@suppresswarnings("unchecked")
public object unmarshal(hierarchicalstreamreader reader, unmarshallingcontext context)
reader.moveup();
}return ds;
}@suppresswarnings("unchecked")
public boolean canconvert(class cls)
}public class dateserializer implements converter
public object unmarshal(hierarchicalstreamreader reader, unmarshallingcontext ctx)
@suppresswarnings("unchecked")
public boolean canconvert(class cls)
}
序列化和反序列化 C 序列化與反序列化。
序列化介紹 把物件用一種新的格式來表示。系列化只序列化資料。序列化不建議使用自動屬性 為什麼要序列化 將乙個複雜的物件轉換流,方便儲存與資訊交換。class program class person public int age 二進位制序列化 就是將物件變成流的過程,把物件變成byte class...
序列化與反序列化
把複雜的資料型別壓縮到乙個字串中 serialize 把變數和它們的值編碼成文字形式 unserialize 恢復原先變數 eg stooges array moe larry curly new serialize stooges print r new echo print r unserial...
序列化與反序列化
序列化是將物件處理為位元組流以儲存物件或傳輸到記憶體 資料庫或檔案。其主要目的是儲存物件的狀態,以便可以在需要時重新建立物件。相反的過程稱為反序列化。通過序列化,開發人員可以儲存物件的狀態,並在需要時重新建立該物件,從而提供物件的儲存以及資料交換。通過序列化,開發人員還可以執行類似如下的操作 通過 ...