json
文件内容存储的格式
1 json格式,[] 代表数组 { }
代表对象 ,
json字符串要求:属性必须使用""括起来,属性值可以基本数据类型也可以对象类型,不能是函数,
最后一个属性值不能带逗号
json字符串格式
{
"name":"zs",
"age":10
}
序列化: 把对象转成字符串
反序列化:把字符串格式转成对象
目的:先把对象转成json字符串格式。再通过之前学的写入对象写到文本中,
读取的先从文档读取成一个字符串,再把字符转成对应的对象,
2 xml格式
3 ini格式
4 csv格式
直接使用第三方进行json序列化
使用JSon.net第三方:点击引用--->管理nuget程序包--->切换浏览输入第三方包名关键字------ > 点击右边安装,
序列化过程
SerializeObject()把对象转成字符串
解析对象,把对象转成字符串,参数转成字符串的对象 例如p1转成字符串,
File.WriteAllText()写入指定文档
反序列化过程
string ss = File.ReadAllText();读取
People pp = JsonConvert.DeserializeObject<People>(ss);把字符串转成对象
注People是类
实例
cs
internal class Program
{
static void Main(string[] args)
{
//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);
Console.ReadKey();
}
}
class People
{
public string Name { get; set; }
public int Age { get; set; }
}
数组转成json格式
把数组转成json字符串
string data = JsonConvert.SerializeObject(list); list是数组
写入文档
using (StreamWriter sw = new StreamWriter(@"1.json"))
{
sw.WriteLine(data);
}
读取本地文件值是字符串
using (StreamReader sr = new StreamReader(@"1.json"))
{
string lines;
while ((lines = sr.ReadLine()) != null)
{
Console.WriteLine(lines);
List<Student> list1 = JsonConvert.DeserializeObject<List<Student>>(lines);
for (int i = 0; i < list1.Count; i++)
{
Console.WriteLine(list1[i].Name + "---" + list1[i].Age);
}
}
}
实例
cs
internal class Program
{
static void Main(string[] args)
{
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)
{
Console.WriteLine(lines);
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.ReadLine();
}
}
class Student
{
public string Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
难度提升 实例2
cs
internal class Program
{
static void Main(string[] args)
{
//从本地读取数据
string data = File.ReadAllText(@"新建文本文档.txt");
//Console.WriteLine(data);
RootData root = JsonConvert.DeserializeObject<RootData>(data);
//Console.WriteLine(root.topicMessageList.Count);//16
for (int i = 0; i < root.topicMessageList.Count; i++)
{
TopicMessageList top = root.topicMessageList[i]; //topicMessageList每一个对象
Console.WriteLine(top.title+"----"+top.author_name+"---"+top.cover_image_url);
}
Console.ReadKey();
}
}
/// <summary>
/// 根数据
/// </summary>
class RootData
{
public int code { get; set; }
public string message { get; set; }
public int total { get; set; }
public List<TopicMessageList> topicMessageList { get; set; } //这个集合是存储的下面类TopicMessageList的对象
}
class TopicMessageList
{
public string title { get; set; }
public string author_name { get; set; }
public string cover_image_url { get; set;}
}