我有一个想要序列化为Json格式的对象 我正在使用:
public string ToJson()
{
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
string sJSON = jsonSerializer.Serialize(this);
return sJSON;
}
如何定义“this”中的某些字段不能序列化?
答案 0 :(得分:23)
答案 1 :(得分:4)
可能的方法是将这些字段声明为private
或internal
。
替代解决方案是使用DataContractJsonSerializer
类。在这种情况下,您可以在班级中添加DataContract
属性。您可以使用DataMember
属性控制要序列化的成员 - 标记有该成员的所有成员都是序列化的,而其他成员则不是。
您应该按如下方式重写ToJson方法:
public string ToJson()
{
DataContractJsonSerializer jsonSerializer =
new DataContractJsonSerializer(typeof(<your class name>));
MemoryStream ms = new MemoryStream();
jsonSerializer.WriteObject(ms, this);
string json = Encoding.Default.GetString(ms.ToArray());
ms.Dispose();
return json;
}
答案 2 :(得分:2)
查看JavaScriptConverter课程。您可以register converters自定义特定对象类型的序列化/反序列化过程。然后,您可以包含所需的属性,而无需对原始类进行任何更改。