2016-12-06 6 views
4

私はデータベース内にバイナリ直列化オブジェクトを持っています。彼らはprotobufで連載されています。 これで、データベースの内容を見るためにいくつかのビューアを生成する必要があります。 したがって、私はデータベースからのストリームを読み込み、それをオブジェクトに逆直列化しました。 それが動作し、結果はオブジェクトのリストです:私は、データベースの内容を確認するために提出するオブジェクトのリストを保存したいと思い、今セッターなしでタイプを逆シリアル化できません

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

。私はそれをXMLに保存するのが最善だと思った。だから、私は試してみました:

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

しかし、私はエラーが出る:それは財産は公共セッターを持っていない「キー」が含まれているため、タイプを「My.Entities.IdBase」デシリアライズすることはできません。

今何ですか?クラス定義をセッターに変更することはできません。 オブジェクトを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です。あなたはナゲットで見つけることができます。

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

私は "string json = JsonConvert.SerializeObject(objectToWrite、seetings);"を使用します。 私は文字列としてjsonを取得します。どのようにJObjectに変換できますか?私は試してみました:JObject obj = JObject.Parse(json);それは動作しません。 – Simon

関連する問題