一部のデータをJSONに変換するためにサードパーティのDLLを使用しないようにしています。
クラスがあるとします:
public class NodeData {
public int NodeID { get; set; }
public int ParentID { get; set; }
public int Index { get; set; }
public string FriendlyName { get; set; }
public NodeData(int nodeID, int parentID, int index, string friendlyName) {
this.NodeID = nodeID;
this.ParentID = parentID;
this.Index = index;
this.FriendlyName = friendlyName;
}
}
次に、 を使用しDataContractJsonSerializer
て、構築されたオブジェクトのリストを次のNodeData
ように JSON 文字列に変換します。
MemoryStream ms = new MemoryStream();
DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(List<NodeData>));
ds.WriteObject(ms, data);
string jsonString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
これは以下をスローしSystem.Runtime.Serialization.InvalidDataContractException
ます:
タイプ 'xxx.xxx.NodeData' をシリアル化できません。これを DataContractAttribute 属性でマークし、シリアル化するすべてのメンバーを DataMemberAttribute 属性でマークすることを検討してください。型がコレクションの場合は、CollectionDataContractAttribute でマークすることを検討してください。サポートされているその他のタイプについては、Microsoft .NET Framework のドキュメントを参照してください。
System.Runtime.Serialization.Json を使用してリストを JSON へのシリアル化に対して有効にするにはどうすればよいですか?