JsonSerializer 反序列化字节数组

问题描述 投票:0回答:2

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

 var stringValue = Encoding.UTF8.GetString(byteArray);
 T data = JsonConvert.DeserializeObject<T>(stringValue);

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

.net-core json-deserialization system.text.json
2个回答
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); } } }
型号DTO

public class ModelDTO { public string MyProperty1 { get; set; } public int MyProperty2 { get; set; } }
输出:

第一:asd,第二:2


0
投票

序列化字节数组到JSON:

var bytes = MyByteArray; var jsonString = JsonConvert.SerializeObject(bytes.Select(item => (int)item).ToArray()); // jsonString = [1, 0, 1, 0, 0, 0]

反序列化 JSON 到 ByteArray:

// jsonString = [1, 0, 1, 0, 0, 0] var bytesArray = JsonConvert.DeserializeObject<byte[]>(jsonString);
    
© www.soinside.com 2019 - 2024. All rights reserved.