C#中对象的序列化与反序列化

无须多言,代码如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Windows.Forms;
using System.Text;

namespace ConsoleApplication2
{
    [DataContract(Namespace = "http://coderzh.cnblogs.com")]
    class Config
    {
        [DataMember(Order = 0)]
        public string encoding { get; set; }
        [DataMember(Order = 1)]
        public string[] plugins { get; set; }
        [DataMember(Order = 2)]
        public Indent indent { get; set; }
    }

    [DataContract(Namespace = "http://coderzh.cnblogs.com")]
    class Indent
    {
        [DataMember(Order = 0)]
        public int length { get; set; }
        [DataMember(Order = 1)]
        public bool use_space { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var config = new Config()
            {
                encoding = "UTF-8",
                plugins = new string[] { "python", "C++", "C#" },
                indent = new Indent() { length = 4, use_space = false }
            };


            var serializer = new System.Runtime.Serialization.DataContractSerializer(typeof(Config));
            var stream = new MemoryStream();
            serializer.WriteObject(stream, config);

            byte[] dataBytes = new byte[stream.Length];

            stream.Position = 0;

            stream.Read(dataBytes, 0, (int)stream.Length);

            string dataString = Encoding.UTF8.GetString(dataBytes);

            Console.WriteLine("JSON string is:");
            //Console.WriteLine(dataString);
            MessageBox.Show(dataString);
            Console.ReadLine();
            var mStream = new MemoryStream(Encoding.Default.GetBytes(dataString));
            Config readConfig = (Config)serializer.ReadObject(mStream);

            Console.WriteLine("Encoding is: {0}", readConfig.encoding);
            foreach (string plugin in readConfig.plugins)
            {
                Console.WriteLine("plugins is: {0}", plugin);
            }
            Console.WriteLine("indent.length is: {0}", readConfig.indent.length);
            Console.WriteLine("indent.use_space is: {0}", readConfig.indent.use_space);
            Console.ReadLine();
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值