您的位置:首页 > Web前端 > JavaScript

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

2014-05-10 22:54 351 查看
这里有本博客涉及到的序列化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={1}", p2.Name, p2.Age.ToString());
}
}
//必须加如下特性,否则不能序列化
[DataContract]
class Person
{
[DataMember]
public string Name { get; set; }

[DataMember]
public int Age { get; set; }
}
}


2、序列化成xml,类似上面的例子,需要使用到的类为DataContractSerializer,这里不再赘述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: