2016-12-06 41 views
4

我有數據庫中的二進制序列化對象。他們用protobuf序列化。 現在我需要生成一些查看器來查看數據庫的內容。 因此,我從數據庫中讀取數據流並將其反序列化爲對象。 它的工作原理,其結果是對象列表:不能反序列化沒有setter的類型

var dbData = readData(someType);//it is IList collection 

現在,我想挽救的對象的此列表文件,檢查數據庫的內容。我認爲這將是最好的保存到XML。所以,我曾嘗試:

var serializer = new XmlSerializer(dbData.GetType()); 

,但我得到一個錯誤:無法反序列化類型「My.Entities.IdBase」,因爲它包含屬性鍵「」不具有公共setter方法。

現在是什麼?我無法將類定義更改爲setter。 我應該將對象保存爲json還是純文本?或者我應該提取所有的屬性和值,並將其保存到一些XML?任何代碼示例?

+2

你可以使用Json.Net http://www.newtonsoft.com/json,它能夠序列化私有成員。 Howto:http://stackoverflow.com/questions/24106986/json-net-force-serialization-of-all-private-fields-and-all-fields-in-sub-classe – TripleEEE

+0

XmlSerializer類型抱怨這些事情甚至如果你只打算用它序列化對象,並且從不反序列化。 –

回答

0

JSON.NET將在這裏得到答案。你可以在nuget中找到它。像這樣使用它:

JsonConvert.DeserializeObject<T>(input); 
+0

我使用「字符串JSON = JsonConvert.SerializeObject(objectToWrite,seetings);」 我得到json作爲字符串。我如何將它轉換爲JObject?我試過了:JObject obj = JObject.Parse(json);但它不起作用。 – Simon