2

一部のデータを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 へのシリアル化に対して有効にするにはどうすればよいですか?

4

1 に答える 1