.net core json json字符串 JsonNode处理 JsonDocument处理 两种方式

 

    People people2 = new People() { Age = 12, Name = "222" };
    string peopleStr = JsonSerializer.Serialize(people2, typeof(People), 
        new JsonSerializerOptions { WriteIndented = true, AllowTrailingCommas = true });

    Console.WriteLine( peopleStr);

  

new JsonSerializerOptions { WriteIndented = true, AllowTrailingCommas = true })

WriteIndented  是否漂亮打印  AllowTrailingCommas 是否 允许json 末尾带逗号

打印结果

json字符串  的处理 有两种方式 JsonNode JsonDocument

   string jsonStr = @"{
                     ""Age"": 12,
                     ""Name"": ""222""
                   }";

  

JsonNode  处理  JsonNode jsonNode1 = JsonNode.Parse(jsonStr);

            JsonNode jsonNode1 = JsonNode.Parse(jsonStr);
            int? age = jsonNode1["Age"]?.GetValue<int>();
            string? name = jsonNode1["Name"]?.GetValue<string>();
            Console.WriteLine($"age:{age},name:{name}");
            People? people3 = jsonNode1.Deserialize<People>();
            Console.WriteLine($"age:{people3?.Age},name:{people3?.Name}");
            string path = jsonNode1.GetPath();
            // int index = jsonNode1.GetElementIndex();
            People people = jsonNode1.Deserialize<People>();
            Console.WriteLine($"path:{path} age:{people.Age},name:{people.Name}");

  

JsonDocument 处理 JsonDocument jsonDocument = JsonDocument.Parse(jsonStr);

            JsonDocument jsonDocument = JsonDocument.Parse(jsonStr);
            People? people1 = jsonDocument.Deserialize<People>();
            Console.WriteLine($"age1:{people1?.Age},name1:{people1?.Name}");

  

Utf8JsonWriter  Utf8JsonReader 处理对象

  internal class Program
  {
      static void Main(string[] args)
      {

          People people4 = new People() { Age = 125, Name = "333" };
          byte[] bytes = Serialize(people4);
          object obj = Deserialize(bytes);
          if (obj!=null&& obj is People people5)
          {
              Console.WriteLine($"age:{people5.Age},name:{people5.Name}");
          }
      }
      static byte[]? Serialize(object obj)
      {
          using MemoryStream stream = new MemoryStream();
          using Utf8JsonWriter utf8JsonWriter = new Utf8JsonWriter(stream);
          utf8JsonWriter.WriteStartArray();
          utf8JsonWriter.WriteStringValue(obj.GetType().AssemblyQualifiedName);
          JsonSerializer.Serialize(utf8JsonWriter, obj);
          utf8JsonWriter.WriteEndArray();
          utf8JsonWriter.Flush();
          return stream.ToArray();
      }

      static object? Deserialize(byte[] bytes)
      {
          Utf8JsonReader utf8JsonReader = new Utf8JsonReader(bytes);
          utf8JsonReader.Read();
          if (utf8JsonReader.TokenType == JsonTokenType.StartArray)
          {
              utf8JsonReader.Read();
              string typeStr = Encoding.UTF8.GetString(utf8JsonReader.ValueSpan.ToArray());
              Type type = Type.GetType(typeStr);
              utf8JsonReader.Read();
              return JsonSerializer.Deserialize(ref utf8JsonReader, type);
          }
          return null;
      }

  

 

posted on 2024-07-21 17:09  是水饺不是水饺  阅读(18)  评论(0)    收藏  举报

导航