是否有可能反序列化(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. DataContractSerializer的反序列化已知類型
- 4. JSON.NET未知類型的反序列化
- 5. 反序列化未知類型
- 6. 如何反序列化不知道的類型,而不是普通的情況
- 7. WCF反序列化 - 反序列化器不知道映射到該名稱的任何類型
- 8. 如何在事先不知道類型的情況下反序列化XML?
- 9. protobuf -net不知道如何序列化類型爲= object的datamember
- 10. 如何反序列化對象而不知道它的類型或類型是否存在
- 11. JSON反序列化類型不支持數組的反序列化
- 12. 使用newtonsoft,如何反序列化直到運行時間才知道類型?
- 13. 反序列化JSON已知和未知的使用類型中的一類
- 14. 反序列化未知的繼承類型[C++]
- 15. 如何將XML反序列化未知類型的對象?
- 16. 數據合同:忽略未知類型的反序列化
- 17. 反序列化泛型(但可序列化)類型
- 18. 在反序列化之前如何區分XML文件的類型?
- 19. JSON.NET - 條件類型的反序列化
- 20. 使用protobuf-net反序列化當前流位置的類型
- 21. 消息:net.liftweb.json.MappingException:不知道如何反序列化
- 22. 類型化JSON序列化/反序列化
- 23. 如何預先用Json.net反序列化對象列表而不事先知道它們的類型?
- 24. 錯誤:「反序列化程序不知道映射到此合同的任何類型」?
- 25. JSON反序列化不反序列化?
- 26. WCF反序列化沒有已知類型
- 27. 使用XmlSerializer反序列化隨機/未知類型
- 28. 將JSON反序列化爲未知類型集合
- 29. GSON反序列化與不斷變化的字段類型
- 30. GSON反序列化不斷變化的字段類型