namespace SerializedTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//(1)JSON1 DataContractJsonSerializer
//People p = new People();
//DataContractJsonSerializer serializer = new DataContractJsonSerializer(p.GetType());
//using (FileStream stream = new FileStream("C:\\Users\\Administrator\\Desktop\\json.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
//{
// //序列化
// serializer.WriteObject(stream, p);
// byte[] vs = new byte[stream.Length];
// stream.Position = 0; //============
// stream.Read(vs, 0, (int)stream.Length);
// textBox1.AppendText(Encoding.UTF8.GetString(vs) + "\r\n");
// //反序列化
// stream.Position = 0;
// People ap = (People)serializer.ReadObject(stream);
// textBox1.AppendText("name:"+ap.name+";age:"+ap.age.ToString());
//}
//(2)JSON2 JavaScriptSerializer
//People2 p2 = new People2();
//JavaScriptSerializer serializer = new JavaScriptSerializer();
//StringBuilder builder = new StringBuilder();
序列化
//string jsonstr = serializer.Serialize(p2);
//textBox1.AppendText(jsonstr);
//using (StreamWriter writer = new StreamWriter("C:\\Users\\Administrator\\Desktop\\json.txt"))
//{
// writer.Write(jsonstr);
//}
反序列化
//using (StreamReader reader = new StreamReader("C:\\Users\\Administrator\\Desktop\\json.txt"))
//{
// string str = reader.ReadToEnd();
// var pp2 = (People2)serializer.Deserialize(str,p2.GetType());
// textBox1.AppendText(pp2.name + ";" + pp2.age);
//}
//(3)XML XmlSerializer
People3 p3 = new People3();
XmlSerializer serializer = new XmlSerializer(p3.GetType());
using (FileStream stream = new FileStream("C:\\Users\\Administrator\\Desktop\\xml.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite))
{
serializer.Serialize(stream,p3);
byte[] vs = new byte[stream.Length];
stream.Position = 0; //============
stream.Read(vs, 0, (int)stream.Length);
textBox1.AppendText(Encoding.UTF8.GetString(vs) + "\r\n");
stream.Position = 0;
var pp3 = (People3)serializer.Deserialize(stream);
textBox1.AppendText(pp3.name + ";" + pp3.age +";"+pp3.num);
}
}
}
[DataContract]
class People
{
[DataMember]
public string name = "aa";
[DataMember]
public int age = 20;
//[IgnoreDataMember]
decimal num = 13212453559;
}
class People2
{
//必须是public类型 才能用 JavaScriptSerializer 序列化
public string name = "aa";
public int age = 20;
decimal num = 13212453559;
}
public class People3 //xml序列化要求类必须是public字段 如果是属性,必须读写都是Public
{
//xml只序列化public字段
public string name = "aa";
public int age = 20;
[NonSerialized] //没用
public decimal num = 13212453559;
}
}
Josn&Xml序列化案例
最新推荐文章于 2023-03-17 09:26:58 发布