You need to enable JavaScript to run this app. 如何使用System.Text.Json实现流序列化及反序列化操作
优惠活动
大模型
产品
解决方案
定价
更多

如何使用System.Text.Json实现流序列化及反序列化操作

System.Text.Json 序列化与反序列化到 MemoryStream 示例

基础准备

首先定义测试用的实体类:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public DateTime RegisterTime { get; set; }
}

序列化到 MemoryStream 实现

同步版本

using System.Text.Json;
using System.IO;

// 初始化待序列化对象
var person = new Person
{
    Id = 1,
    Name = "张三",
    Age = 28,
    RegisterTime = DateTime.Now
};

// 序列化配置可选,可根据需求调整
var serializeOptions = new JsonSerializerOptions
{
    WriteIndented = true, // 格式化输出JSON
    Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping // 解决中文转义乱码问题
};

using var memoryStream = new MemoryStream();
// 直接序列化写入流,无需中转字符串
JsonSerializer.Serialize(memoryStream, person, serializeOptions);

// 若需要获取流中的JSON字符串,重置流位置后读取即可
memoryStream.Position = 0;
using var streamReader = new StreamReader(memoryStream);
string jsonStr = streamReader.ReadToEnd();
Console.WriteLine(jsonStr);

异步版本(推荐IO场景使用)

using var memoryStream = new MemoryStream();
await JsonSerializer.SerializeAsync(memoryStream, person, serializeOptions);

// 读取字符串示例
memoryStream.Position = 0;
string jsonStr = await new StreamReader(memoryStream).ReadToEndAsync();

从 MemoryStream 反序列化实现

同步版本

// 接上文序列化生成的memoryStream,首先重置流位置到起始点
memoryStream.Position = 0;

var deserializeOptions = new JsonSerializerOptions
{
    PropertyNameCaseInsensitive = true // 忽略属性名大小写匹配
};

var deserializedPerson = JsonSerializer.Deserialize<Person>(memoryStream, deserializeOptions);
Console.WriteLine($"反序列化结果:Id={deserializedPerson.Id}, Name={deserializedPerson.Name}");

异步版本

memoryStream.Position = 0;
var deserializedPerson = await JsonSerializer.DeserializeAsync<Person>(memoryStream, deserializeOptions);

注意事项

  • 流读写操作前务必确认Position属性值是否处于正确位置,避免读取到空内容
  • 若自定义了序列化规则,需保证序列化和反序列化两端的JsonSerializerOptions配置一致,避免反序列化失败

内容的提问来源于stack exchange,提问作者user6656240

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 09:21:01