• C#实现JSON序列化与反序列化介绍


    方法一:引入System.Web.Script.Serialization命名空间使用 JavaScriptSerializer类实现简单的序列化

    序列化类:Personnel

    public class Personnel
    {
    public int Id { get; set; }
    public string Name { get; set; }
    }

    执行序列化反序列化:

    protected void Page_Load(object sender, EventArgs e)
    {
    Personnel personnel = new Personnel();
    personnel.Id = 1;
    personnel.Name = "小白";


    JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
    //执行序列化
    string r1 = jsonSerializer.Serialize(personnel);

    //执行反序列化
    Personnel _Personnel = jsonSerializer.Deserialize<Personnel>(r1);
    }

    r1输出结果:{"Id":1,"Name":"小白"}

    可以使用 ScriptIgnore属性标记不序列化公共属性或公共字段。

    public class Personnel
    {
    [ScriptIgnore]
    public int Id { get; set; }
    public string Name { get; set; }
    }

    r1输出结果:{"Name":"小白"}

    方法二:引入 System.Runtime.Serialization.Json命名空间使用 DataContractJsonSerializer类实现序列化

    序列化类:People

    public class People
    {
    public int Id { get; set; }
    public string Name { get; set; }
    }

    执行序列化反序列化

    protected void Page_Load(object sender, EventArgs e)
    {
    People people = new People();
    people.Id = 1;
    people.Name = "小白";


    DataContractJsonSerializer json = new DataContractJsonSerializer(people.GetType());
    string szJson = "";
    //序列化
    using (MemoryStream stream = new MemoryStream())
    {
    json.WriteObject(stream, people);
    szJson = Encoding.UTF8.GetString(stream.ToArray());
    }
    //反序列化
    using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
    {
    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(People));
    People _people = (People)serializer.ReadObject(ms);
    }
    }

    szJson输出结果:{"Id":1,"Name":"小白"}

    可以使用IgnoreDataMember:指定该成员不是数据协定的一部分且没有进行序列化,DataMember:定义序列化属性参数,使用DataMember属性标记字段必须使用DataContract标记类 否则DataMember标记不起作用。

    [DataContract]
    public class People
    {
    [DataMember(Name = "id")]
    public int Id { get; set; }
    [IgnoreDataMember]
    public string Name { get; set; }
    }

    输出结果: {"id":1}

  • 相关阅读:
    cf B. Sereja and Suffixes
    cf E. Dima and Magic Guitar
    cf D. Dima and Trap Graph
    cf C. Dima and Salad
    最短路径问题(floyd)
    Drainage Ditches(网络流(EK算法))
    图结构练习—BFSDFS—判断可达性(BFS)
    Sorting It All Out(拓扑排序)
    Power Network(最大流(EK算法))
    Labeling Balls(拓扑)
  • 原文地址:https://www.cnblogs.com/ttssrs/p/2869815.html
Copyright © 2020-2023  润新知