Working with JSON in C# .NET 3.5

后端 未结 3 1392
执念已碎
执念已碎 2021-01-07 04:37

I have found some helper method that allow me to convert an object to JSONM and JSON to an object. Now I am reading in a json file that looks something like this:



        
3条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-01-07 05:30

    You need to use DataContractJsonSerializer which is in the System.Runtime.Serialization.Json namespace. Mark your class with the [DataContract] attribute, collection classes with the [CollectionDataContract] attribute and the properties with the [DataMember] attribute.

    [CollectionDataContract]
    public class People : List
    {
    
    }
    
    [DataContract]
    public class Person
    {
         public Person() { }
    
         [DataMember]
         public int Id{ get; set; }
    
         [DataMember]
         public string Name { get; set; }
    }
    

    Here is a helper class to serialize (To) and deserialize (From)

    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Json;
    
    public class jsonHelper
    {
        public static string To(T obj)
        {
            string retVal = null;
            System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
            using (MemoryStream ms = new MemoryStream())
            {
             serializer.WriteObject(ms, obj);
             retVal = Encoding.Default.GetString(ms.ToArray());
            }
    
            return retVal;
        }
    
        public static T From(string json)
        {
            T obj = Activator.CreateInstance();
            using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
            {
             System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
             obj = (T)serializer.ReadObject(ms);
            }
    
            return obj;
        }
    }
    

    So take your json above and send it to the From method in the jsonHelper class above

    People peeps = jsonHelper.From(input);
    

提交回复
热议问题