如何排除某些成员被序列化为Json?

时间:2011-06-21 09:01:56

标签: .net json serialization

我有一个想要序列化为Json格式的对象 我正在使用:

    public string ToJson()
    {
        JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
        string sJSON = jsonSerializer.Serialize(this);
        return sJSON;
    }

如何定义“this”中的某些字段不能序列化?

3 个答案:

答案 0 :(得分:23)

答案 1 :(得分:4)

可能的方法是将这些字段声明为privateinternal

替代解决方案是使用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自定义特定对象类型的序列化/反序列化过程。然后,您可以包含所需的属性,而无需对原始类进行任何更改。