JsonSerializer 反序列化字节数组

hel*_*rld 5 json-deserialization .net-core system.text.json

使用Newtonsoft反序列化字节数组时,我们可以通过编写以下代码来实现

 var stringValue = Encoding.UTF8.GetString(byteArray);
 T data = JsonConvert.DeserializeObject<T>(stringValue);
Run Code Online (Sandbox Code Playgroud)

但是如何使用 System.Text.Json进行等效操作呢?知道它是UTF8编码吗?

HMZ*_*HMZ 4

这是如何使用 UTF8 字符串的字节数组进行反序列化的工作示例(使用System.Text.Json):

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

        try
        {
            string str = "{ \"MyProperty1\":\"asd\",\"MyProperty2\":2 }";
            byte[] utfBytes = Encoding.UTF8.GetBytes(str);
            var jsonUtfReader = new Utf8JsonReader(utfBytes);
            ModelDTO modelDTO = JsonSerializer.Deserialize<ModelDTO>(ref jsonUtfReader);
            Console.WriteLine($"First:{modelDTO.MyProperty1}, Second:{modelDTO.MyProperty2}");
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

模型DTO

public class ModelDTO
{
    public string MyProperty1 { get; set; }
    public int MyProperty2 { get; set; }      
}
Run Code Online (Sandbox Code Playgroud)

输出:

第一:asd,第二:2