轻量级数据交换语言,能够存储轻量级数据,也可做为配置文件,还能够网络传递json
数字:直接给出
字符串:""标识
对象:{}标识
数组:[]标识数组
注:JSON5容许注释,VS支持网络
{ //字符串 "type": "truck", //int值 "wheeks": 6, //对象 "owner": { "name": "John", "age": "42" }, //数组 "colors": [ "red", "blue", "green" ] }
json文件code
[ { "Name": "小萌", "Date": "20200909", "Have": { "Toys": [ "car", "ipad", "phone" ], "Money": 120000 } }, { "Name": "小名", "Date": "20200809", "Have": { "Toys": [ "rocket", "xbox", "sp" ], "Money": 180000 } } ]
读取内容对象
using(var fs=new FileStream("test.json",FileMode.Open)) { using (var cmt = JsonDocument.Parse(fs)) { var t = cmt.RootElement[0].GetProperty("Have").GetProperty("Toys")[2]; WriteLine(t); } }
遍历ip
using (var fs = new FileStream("data.json", FileMode.Open)) { using (JsonDocument js = JsonDocument.Parse(fs)) { foreach (var item in js.RootElement.EnumerateArray()) { foreach(var jtem in item.GetProperty("Have").GetProperty("Toys").EnumerateArray()) { WriteLine(jtem); } } } }
using(var stream=new FileStream("data.json",FileMode.Create)) { using (var jw = new Utf8JsonWriter(stream)) { //建立数组左中括号 jw.WriteStartArray(); //创建对象左大括号 jw.WriteStartObject(); //写入字符串 jw.WriteString("date", DateTime.UtcNow); //写入数字 jw.WriteNumber("temp", 42); //创建对象右大括号 jw.WriteEndObject(); //创建对象左大括号 jw.WriteStartObject(); //写入字符串 jw.WriteString("date", DateTime.UtcNow); //写入数字 jw.WriteNumber("temp", 43); //创建对象右大括号 jw.WriteEndObject(); //建立数组右中括号 jw.WriteEndArray(); } }
写入结果字符串
[ { "date": "2020-03-18T14:11:04.9090202Z", "temp": 42 }, { "date": "2020-03-18T14:11:04.9106672Z", "temp": 43 } ]
定义与json文件对应的类,在序列化霍反序列化过程当中传入类型it
获得一个对象class
var obj=JsonSerializer.Deserialize<Person>(str); var obj=JsonSerializer.Deserialize<List<Person>>(str);
获得JSON数据test
var str=JsonSerializer.Serialize<Person>(ps); var dt=JsonSerializer.Deserialize<List<Person>>(str);