开发者

How to exclude some members from being serialized to Json?

I have an object that I want to seria开发者_运维问答lize to Json format I'm using:

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

How do I define some fields in "this" to not be serialized?


Use the ScriptIgnoreAttribute.


The possible way is to declare those fields as private or internal.

The alternative solution is to use DataContractJsonSerializer class. In this case you add DataContract attribute to your class. You can control the members you want to serialize with DataMember attribute - all members marked with it are serialized, and the others are not.

You should rewrite your ToJson method as follows:

    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;
    }


Check out the JavaScriptConverter class. You can register converters to customize the serialization/deserialization process for specific object types. You can then include the properties that you want, without making any changes to the original class.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜