【发布时间】:2020-04-22 02:13:40
【问题描述】:
我在使用 MemoryStream 管理字符串时遇到了困难。
具体来说,我正在使用 JSON 而不使用内置的序列化/反序列化方法。
使用 NewtonSoft JSON 编写器时,它非常简单,并且需要一个 TextWriter,因此使用字符串生成器编写类似于这样:
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
using (newton.JsonWriter writer=new newton.JsonTextWriter(sw))
{
writer.WriteStartObject();
writer.WritePropertyName("Name");
writer.WriteValue("Neil");
writer.WriteEnd();
writer.Flush();
System.Console.WriteLine(sb.ToString());
}
但是当我尝试使用新的 .net Core 3.x 时,它不需要 TextWriter,而是 Stream 或 IBufferWriter。不完全知道如何使用 IBufferWriter,我可以让它将流转换为字符串的唯一方法是以下,相比之下这似乎相当笨拙。有没有比设置位置、创建新阅读器和阅读以如下方式结束更好的方法?
将内存流转换为字符串的更好方法还是使用 IBufferWriter?
MemoryStream ms = new MemoryStream();
System.Text.Json.Utf8JsonWriter writer = new Utf8JsonWriter(ms);
writer.WriteStartObject();
writer.WritePropertyName("Name");
writer.WriteStringValue("Neil");
writer.WriteEndObject();
writer.Flush();
ms.Position = 0;
string output = new StreamReader(ms).ReadToEnd();
Console.WriteLine(output);
谢谢。
【问题讨论】: