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

Ela*_*nda 8 .net serialization json

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

    public string ToJson()
    {
        JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
        string sJSON = jsonSerializer.Serialize(this);
        return sJSON;
    }
Run Code Online (Sandbox Code Playgroud)

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

Rom*_*aev 23

使用ScriptIgnoreAttribute.

  • +1.这是正确的答案.我很高兴看到底部的答案,否则我会错过这个.工作得很漂亮. (3认同)

Eug*_*ene 4

可能的方法是将这些字段声明为privateor 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;
    }
Run Code Online (Sandbox Code Playgroud)