是否有可能反序列化(c#)xml,csv,json(不管它是什麼),而不知道它的類型?但是回饋一個對象(最終是正確的類型)?反序列化之前不知道的類型
5
A
回答
2
是的,這是可能的。
序列化的XML/CSV/JSON數據必須包含標識符,以允許反序列化器知道要創建什麼類型的對象,因爲事先不能知道這些對象。爲了使反序列化器可以構造新的對象實例,通常使用FactoryMethod設計模式。
反序列化比序列化更困難。
1
不以任何簡單的方式。您必須編寫邏輯來分析數據,並確定其格式最接近的類型。
1
通常是的。但這取決於你使用的是哪個序列化。序列化數據必須包含有關序列化對象類型的元數據。例如,xml序列化(System.Xml.Serialization)不支持這種情況。
2
這取決於序列化。
BinarySerializer將類型信息嵌入到它的輸出流中,所以你描述的將會很好地工作。你得到一個物體,你甚至可以對它進行反射,然後將其轉換爲正確的類型。
XML序列化不能像那樣工作,這就是XmlSerializer在其構造函數中要求類型的原因。
在數據可能是數量有限的類型之一的情況下,您最好不過了,它們都是從基本類型繼承的。然後你可以給出基類型(使用已知的類型屬性進行修飾,讓它知道所有其他可能的類型),然後將數據反序列化爲標準基類型,然後檢查它。
CSV和JSON更加困難,因爲它們沒有很多序列化支持,它們被納入框架。
相關問題
- 1. 反序列化JSON.NET不知道類型
- 2. 在不知道類型的情況下反序列化XML
- 3. 反序列化未知類型
- 4. 如何反序列化不知道的類型,而不是普通的情況
- 5. WCF反序列化 - 反序列化器不知道映射到該名稱的任何類型
- 6. 如何在事先不知道類型的情況下反序列化XML?
- 7. protobuf -net不知道如何序列化類型爲= object的datamember
- 8. 反序列化JSON已知和未知的使用類型中的一類
- 9. 數據合同:忽略未知類型的反序列化
- 10. 如何將XML反序列化未知類型的對象?
- 11. 反序列化未知的繼承類型[C++]
- 12. 反序列化泛型(但可序列化)類型
- 13. 消息:net.liftweb.json.MappingException:不知道如何反序列化
- 14. 錯誤:「反序列化程序不知道映射到此合同的任何類型」?
- 15. 將JSON反序列化爲未知類型集合
- 16. 使用XmlSerializer反序列化隨機/未知類型
- 17. GSON反序列化與不斷變化的字段類型
- 18. Restsharp和反序列化派生類型
- 19. 反序列化JSON遞歸類型
- 20. 反序列化JSON - 錯誤類型
- 21. 反序列化一個通用類型
- 22. 反序列化多種類型與GSON
- 23. Json反序列化流返回類型
- 24. 反序列化派生類型
- 25. 反序列化JSON陣列與不同類型的
- 26. JSON Newtonsoft C#反序列化不同類型的對象列表
- 27. 不能反序列化未知類型的數組使用gson w/java
- 28. 爪哇GSON - 序列化&反序列化類泛型類型爲List
- 29. 如何使用泛型屬性序列化/反序列化類?
- 30. Json.net序列化/反序列化派生類型?