问题描述
使用 Newtonsoft 对字节数组进行反序列化时,我们可以通过编写以下代码来实现
var stringValue = Encoding.UTF8.GetString(byteArray);
T data = JsonConvert.DeserializeObject<T>(stringValue);
但是如何使用System.Text.Json 进行等效操作?知道它正在编码UTF8吗?
解决方法
这是一个如何使用UTF8字符串的字节数组进行反序列化的有效示例(使用 System.Text.Json ):
var output = arr.filter(x => x.context == "ccccccc" );
ModelDTO
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);
}
}
}
输出:
第一:asd,第二:2