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,写作
浙公网安备 33010602011771号