net core中JSON操做

JSON操做

簡介

1.介紹

輕量級數據交換語言,能夠存儲輕量級數據,也可做爲配置文件,還能夠網絡傳遞json

2.結構

數字:直接給出
字符串:""標識
對象:{}標識
數組:[]標識數組

3.舉例

注:JSON5容許註釋,VS支持網絡

{
  //字符串
  "type": "truck",
  //int值
  "wheeks": 6,
  //對象
  "owner": {
    "name": "John",
    "age": "42"
  },
  //數組
  "colors": [ "red", "blue", "green" ]
}

操做

1.讀取

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);
相關文章
相關標籤/搜索