【FCL】将实体类序列化为xml,Json等格式

这里有本博客涉及到的序列化Json和Binary格式数据的Demo:点击打开链接


一、序列化成二进制格式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace BinarySerialization
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person()
            {
                Name = "Jhon",Age = 11
            };
            Person p2 = null;

            using (Stream objStream = new MemoryStream())
            {
                IFormatter formatter = new BinaryFormatter();
                //序列化
                formatter.Serialize(objStream,p);
                
                StreamReader sr = new StreamReader(objStream);
                Console.WriteLine(sr.ReadToEnd());

                //反序列化
                objStream.Seek(0,SeekOrigin.Begin);
                p2 = formatter.Deserialize(objStream) as Person;
            }

            Console.WriteLine("p2.Name={0},p2.Age={1}",p2.Name,p2.Age);
        }
    }

    [Serializable]
    class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
}


二、序列化成xml格式数据,请参考我的另一篇博文: 点击打开链接


三、WCF-基于数据契约实体类的序列化

1、序列化为Json格式的数据:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person();
            p.Name = "John";
            p.Age = 42;

            MemoryStream stream1 = new MemoryStream();

            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person));
            ser.WriteObject(stream1,p);

            //显示Json格式数据
            stream1.Position = 0;
            StreamReader sr = new StreamReader(stream1);
            Console.WriteLine("Json from of Person object: ");
            Console.WriteLine(sr.ReadToEnd());

            //反序列化
            stream1.Position = 0;
            Person p2 = (Person)ser.ReadObject(stream1);

            Console.WriteLine("p2.Name={0},p2.Age.ToString());
        }
    }     
    //必须加如下特性,否则不能序列化
    [DataContract]
    class Person
    {
        [DataMember]
        public string Name { get; set; }

        [DataMember]
        public int Age { get; set; }
    }
}
2、序列化成xml,类似上面的例子,需要使用到的类为DataContractSerializer,这里不再赘述。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇