如何使用System.Text.Json序列化到指定TextWriter实例?
关于System.Text.Json直接序列化到TextWriter的解答
System.Text.Json 原生支持直接序列化到 TextWriter 实例,不需要获取其底层的 Stream 对象,哪怕是没有底层流的 TextWriter 实现也可以正常使用。
可用方法
JsonSerializer 类本身就提供了接收 TextWriter 参数的序列化重载,不需要额外配置或者引入第三方包:
- 同步序列化:直接调用
JsonSerializer.Serialize(TextWriter, object, [JsonSerializerOptions]) - 异步序列化:直接调用
JsonSerializer.SerializeAsync(TextWriter, object, [JsonSerializerOptions], CancellationToken)
代码示例
using System.Text.Json; using System.IO; // 待序列化的目标对象 var sampleData = new { Id = 1, Title = "测试内容", IsActive = true }; // 任意TextWriter实例,这里以无底层流的StringWriter为例 using TextWriter targetWriter = new StringWriter(); // 直接写入,不需要访问底层流 JsonSerializer.Serialize(targetWriter, sampleData); // 取出序列化结果 string jsonOutput = targetWriter.ToString();
如果是异步场景:
await JsonSerializer.SerializeAsync(targetWriter, sampleData);
补充说明
很多开发者找不到这个功能,主要是大部分入门示例只演示了序列化为字符串、序列化到 Stream 的常用重载,TextWriter 相关重载很少被作为典型案例展示,容易被忽略。这个重载在序列化过程中会直接调用 TextWriter 的文本写入API输出JSON内容,完全不会尝试访问非公开的底层流对象,适配所有合法的 TextWriter 实现。
内容的提问来源于stack exchange,提问作者mark
相关产品推荐
相关产品推荐

