【发布时间】:2013-07-26 20:50:27
【问题描述】:
我试图避免使用任何第三方 DLL 将某些数据转换为 JSON。
假设我有课:
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 属性序列化的成员。 如果类型是一个集合,考虑用 集合数据合同属性。请参阅 Microsoft .NET 框架 其他支持类型的文档
如何使我的列表对使用 System.Runtime.Serialization.Json 的 JSON 序列化有效?
【问题讨论】: