![](/img/trans.png)
[英]What's the easiest way to save an object to a file without serialization attributes?
[英]Save object to file - What are common alternate serialization methods?
編輯:最初的問題是出於誤解,並已更新。
從其他語言來看,C#似乎沒有一種簡單的方法可以將對象和組件直接轉儲到文件中,這似乎很奇怪。
讓我們以Java為例,在這里我可以將任何對象轉儲到文件並加載而沒有明顯的限制:
//Save object to file:
FileOutputStream saveFile = new FileOutputStream(---filePath---);
ObjectOutputStream save = new ObjectOutputStream(saveFile);
save.writeObject(---YorObjectHere---);
//Load object from file
FileInputStream saveFile = new FileInputStream(---filePath---);
ObjectInputStream save = new ObjectInputStream(saveFile);
---ObjectType--- loadedObject = (---ObjectType---) save.readObject();
可以在C#中輕松實現這種事情嗎?
我嘗試了序列化的標准方法:
//Save object to file:
IFormatter formatterSave = new BinaryFormatter();
Stream streamSave = new FileStream(---filePath---, FileMode.Create, FileAccess.Write, FileShare.None);
formatterSave.Serialize(streamSave, ---ObjectToSave---);
//Load object from file
IFormatter formatterLoad = new BinaryFormatter();
Stream streamLoad = new FileStream(---filePath---, FileMode.Open, FileAccess.Read, FileShare.Read);
---ObjectType--- ---LoadedObjectName--- = (---ObjectType---)formatterLoad.Deserialize(streamLoad);
盡管此方法非常簡單,但由於無法始終添加[serializable]
標簽,因此它並不總是與現有代碼或鎖定代碼一起使用。
那么,序列化的最佳選擇是什么?
多虧了注釋,我嘗試了XML方法,但由於它無法序列化ArrayList(如MSDN上所示),所以它也不起作用
//Save object to file:
var serializerSave = new XmlSerializer(typeof(objectType));
writer = new StreamWriter(filePath, append);
serializerSave.Serialize(writer, objectToWrite);
//Load object from file
var serializerLoad = new XmlSerializer(typeof(objectType));
reader = new StreamReader(filePath);
return (T)serializerLoad.Deserialize(reader);
看起來JSON是輕松實現此目標的唯一方法,還是有另一種替代方法,可以在無需大量代碼的情況下與普通C#庫進行序列化?
感謝那些評論並指出我正確方向的人。
盡管基本庫中沒有介紹它,但在這種情況下使用JSON似乎是最好的選擇,我計划使用Json.NET,可以在以下位置找到它: http : //www.nuget.org/packages/Newtonsoft.Json
另一個不錯的選擇是Google Gson: https : //code.google.com/p/google-gson/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.