輕量級數據交換語言,能夠存儲輕量級數據,也可做爲配置文件,還能夠網絡傳遞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);