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);
相关文章
相关标签/搜索