使用 Newtonsoft 反序列化字节数组时,我们可以通过编写以下代码来实现
var stringValue = Encoding.UTF8.GetString(byteArray);
T data = JsonConvert.DeserializeObject<T>(stringValue);
但是如何使用 System.Text.Json 来实现相同的功能?请注意,编码方式为UTF8。
使用 Newtonsoft 反序列化字节数组时,我们可以通过编写以下代码来实现
var stringValue = Encoding.UTF8.GetString(byteArray);
T data = JsonConvert.DeserializeObject<T>(stringValue);
但是如何使用 System.Text.Json 来实现相同的功能?请注意,编码方式为UTF8。
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);
}
}
}
模型DTO
public class ModelDTO
{
public string MyProperty1 { get; set; }
public int MyProperty2 { get; set; }
}
输出:
第一项:asd,第二项:2
utfString
? - Joeliusbyte[] utfBytes = Encoding.UTF8.GetBytes(str);
- HMZvar bytes = MyByteArray;
var jsonString = JsonConvert.SerializeObject(bytes.Select(item => (int)item).ToArray());
// jsonString = [1, 0, 1, 0, 0, 0]
// jsonString = [1, 0, 1, 0, 0, 0]
var bytesArray = JsonConvert.DeserializeObject<byte[]>(jsonString);
Utf8JsonReader
进行反序列化:var utf8Reader = new Utf8JsonReader(jsonUtf8Bytes);
weatherForecast = JsonSerializer.Deserialize<WeatherForecast>(ref utf8Reader);
MSDN - HMZ