利用DataContractJsonSerializer和范型实现JSon的序列化和反序列化操作

(1)首先定义一个类Customer作为示例。

             public class Customer
              {
                   public int Unid { get; set; }
                   public string CustomerName { get; set; }
              }

(2)添加引用System.ServiceModel 和 System.ServiceModel.Web。

         添加

                 using System.Runtime.Serialization;
                 using System.Runtime.Serialization.Json;

                 using System.IO.MemoryMappedFiles;

(3)定义函数实现JSon的序列化和反序列化。

       public string ToJson<T>(T t)
        {
            DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(T));
            MemoryStream ms = new MemoryStream();
            ds.WriteObject(ms, t);
            string strReturn = Encoding.UTF8.GetString(ms.ToArray());
            ms.Close();
            return strReturn;
        }

        public T FromJson<T>(string strJson) where T:class
        {
            DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(T));
            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJson));
            return ds.ReadObject(ms) as T;
        }

(4)编写函数实现对上述函数调用,实现具体的实体对象序列化和反序列化操作。

        private void button1_Click(object sender, EventArgs e)
        {
            Customer cc = new Customer { Unid = 1, CustomerName = "Tom" };
            string strJsons = ToJson<Customer>(cc);
            textBox1.Text = textBox1.Text + (strJsons);//在文本框中输出。

            string strJson = "{\"CustomerName\":\"Tom\",\"Unid\":1}";
            Customer c = FromJson<Customer>(strJson);
            textBox1.Text = textBox1.Text + (c.Unid + " " + c.CustomerName);//在文本框中输出。
        }

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C# 中,要对对象进行反序列化,你可以使用 `BinaryFormatter` 类或其他适用的反序列化器。下面是一个使用 `BinaryFormatter` 进行反序列化的示例代码: ```csharp using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; [Serializable] public class Person { public string Name { get; set; } public int Age { get; set; } } public class DeserializationExample { public static void Main() { FileStream fileStream = new FileStream("person.dat", FileMode.Open); BinaryFormatter formatter = new BinaryFormatter(); // 反序列化 Person deserializedPerson = (Person)formatter.Deserialize(fileStream); fileStream.Close(); Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}"); } } ``` 在上述示例中,我们首先打开名为 "person.dat" 的文件流,并创建一个 `BinaryFormatter` 对象。然后,我们使用 `formatter.Deserialize` 方法从文件流中读取字节并将其反序列化为一个 `Person` 对象。最后,我们关闭文件流,并输出反序列化后的对象的属性值。 请注意,在进行反序列化时,需要确保反序列化的环境与序列化时的环境相匹配,包括使用相同的类定义、程序集版本等。否则,可能会导致反序列化失败或产生意外的结果。 另外,还有其他的序列化反序列化方式可供选择,例如使用 JSON 格式进行序列化反序列化。你可以使用 `DataContractJsonSerializer` 或其他 JSON 序列化器来实现。不同的序列化方式可能具有不同的性能特点和适用场景,你可以根据具体需求选择适合的方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值