《序列化和反序列化》
//文件内容存储的格式
//1 json格式,[] 代表数组 {}代表对象,
//json字符串要求:属性必须使用""括起来,属性值可以基本数据类型也可以对象类型,不能是函数
//最后一个属性值不能带逗号
/*json字符串格式
* {
* "name":"zs",
* "age":10
* }
*/
//序列化:把对象转成字符串
//反序列化:把字符串格式转成对象
//目的:先把对象转成json字符串格式。再通过之前学的写入写到文本当中
// 读取的线从文档读取成一个字符串,再把字符串转成对应的对象,
//2 xml格式
//3 ini格式
//4 csv格式
//直接使用第三方进行json序列化
//使用JSon.net第三方:点击引用-->管理nuget程序包--->切换浏览输入第三方包名关键字---->点击右边安装
//1把对象存储到文档中
People p1 = new People() { Name="张三",Age=10};
//把对象转成json字符串
//序列化过程
//SerializeObject()解析对象,把对象转成字符串,参数转成字符串的对象 例如p1转成字符串
string datastring= JsonConvert.SerializeObject(p1);
//Console.WriteLine(datastring+"------");
//写入指定文档
File.WriteAllText(@"1.txt",datastring);
//2读取
string ss = File.ReadAllText(@"1.txt");
//反序列化过程
//把字符串转成对象
People pp= JsonConvert.DeserializeObject<People>(ss);
Console.WriteLine(pp.Name+"----"+pp.Age);
《数组转成json格式》
List<Student> list = new List<Student>();
for (int i = 0; i < 10; i++)
{
Student s=new Student();
s.Name = "仓" + i + "号";
s.Age = i + 18;
s.Id = "00" + i;
list.Add(s);
}
//把数组转成json字符串 存储本地文档
string data= JsonConvert.SerializeObject(list);
//Console.WriteLine(data);
using (StreamWriter sw = new StreamWriter(@"1.json"))
{
sw.WriteLine(data);//写入文档
}
//读取本地文件值是字符串
using (StreamReader sr=new StreamReader(@"1.json"))
{
string lines;
while ((lines = sr.ReadLine()) != null)
{
List<Student> list1 = JsonConvert.DeserializeObject<List<Student>>(lines);
for (int i = 0; i < list1.Count; i++)
{
Console.WriteLine(list1[i].Name + "--------" + list1[i].Age);
}
// Console.WriteLine(lines);
}
//把字符串转成对象