Json

JSON

一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。

JSON是一个标记符的序列。这套标记符包含六个构造字符字符串数字和三个字面名
JSON是一个序列化的对象数组

序列化和反序列化

序列化:JsonConvert.SerializeObject把内存中的对象转化为一个可传输的字符串的过程。 

(便于保存和数据传输,如果不序列化的话,变量是内存中的对象,会因为关闭电脑/程序而导致数据丢失。)     

反序列化:JsonConvert.DeserializeObject把字符串转化为一个对象的过程。                                 

输出json格式中的数据

skill.txt

[
	{"id":1,"name":"张三","skill":"画画"},
	{"id":2,"name":"李四","skill":"书法"},
	{"id":3,"name":"Sunny","skill":"写作"}
]

解析json时创建一个与之对应的类。

class Skill
{
        public int id { get; set; }
        public string name { get; set; }
        public string skill { get; set; }
 }

获取JSON中的数据

static void Main(string[] args)
{
      //Serialize 序列化:把内存中的对象转化为一个字符串的过程
      //JsonConvert.SerializeObject();
      //Deserialize反序列化:把字符串转化为对象的过程
      Skill[] skillArray = JsonConvert.DeserializeObject<Skill[]>(File.ReadAllText("skills.txt"));
      //使用泛型确定要转化的类型(当前为数组),也可以把它用list接收
      //List<Skill> skillArray = JsonConvert.DeserializeObject<List<Skill>>(File.ReadAllText("skills.txt"));
      foreach(Skill skill in skillArray)
      {
           Console.WriteLine(skill.id + "," + skill.name + "," + skill.skill);
       }
 }
1,张三,画画
2,李四,书法
3,Sunny,写作

序列化:

Skill sk = new Skill();
sk.id = 100;
sk.name = "Wednesday";
sk.skill = "奥数";
string str = JsonConvert.SerializeObject(sk);
Console.WriteLine(str);

{"id":100,"name":"Wednesday","skill":"奥数"}

 people对象的反序列化

{
	id:1,
	"city":"云南",
	"day":"20221222",
	"skills":[
		{"id":1,"name":"张三","skill":"画画"},
		{"id":2,"name":"李四","skill":"书法"},
		{"id":3,"name":"Sunny","skill":"写作"}
	]
}

 class People
    {
        public int id { get; set; }
        public string city { get; set; }
        public string day { get; set; }
        public List<Skill> skills { get; set; }
    }

People people = JsonConvert.DeserializeObject<People>(File.ReadAllText("people.txt"));
Console.WriteLine("id:" + people.id + " city:" + people.city + " day:" + people.day);
foreach(Skill s in people.skills)
{
   Console.WriteLine(s.id + "," + s.name + "," + s.skill);
}

id:1 city:云南 day:20221222
1,张三,画画
2,李四,书法
3,Sunny,写作

 

posted @ 2022-12-07 15:58  浑浑噩噩一只小迷七  阅读(286)  评论(0)    收藏  举报