serializing only parts of an object with json

前端 未结 1 1778
旧时难觅i
旧时难觅i 2020-12-11 10:40

I have an object called MyObject that has several properties. MyList is a list of MyObject that I populate with a linq query and then I serialize MyList into json. I end up

相关标签:
1条回答
  • 2020-12-11 11:28
    // simple dummy object just showing what "MyObject" could potentially be
    public class MyObject
    {
        public String Property1;
        public String Property2;
        public String Property3;
        public String Property4;
        public String Property5;
        public String Property6;
    }
    
    // custom converter that tells the serializer what to do when it sees one of
    // the "MyObject" types. Use our custom method instead of reflection and just
    // dumping properties.
    public class MyObjectConverter : JavaScriptConverter
    {
        public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
        {
            throw new ApplicationException("Serializable only");
        }
    
        public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
        {
            // create a variable we can push the serailized results to
            Dictionary<string, object> result = new Dictionary<string, object>();
    
            // grab the instance of the object
            MyObject myobj = obj as MyObject;
            if (myobj != null)
            {
                // only serailize the properties we want
                result.Add("Property1", myobj.Property1);
                result.Add("Property3", myobj.Property3);
                result.Add("Property5", myobj.Property5);
            }
    
            // return those results
            return result;
        }
    
        public override IEnumerable<Type> SupportedTypes
        {
            // let the serializer know we can accept your "MyObject" type.
            get { return new Type[] { typeof(MyObject) }; }
        }
    }
    

    And then where ever you're serializing:

    // create an instance of the serializer
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    // register our new converter so the serializer knows how to handle our custom object
    serializer.RegisterConverters(new JavaScriptConverter[] { new MyObjectConverter() });
    // and get the results
    String result = serializer.Serialize(MyObjectInstance);
    
    0 讨论(0)
提交回复
热议问题