.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;
}
浙公网安备 33010602011771号