Мне трудно использовать MemoryStream для управления строками.
В частности, я играю с JSON без использования встроенных методов сериализации / десериализации.
При использовании NewtonSoft JSON Writer, это достаточно просто и требует 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);
спасибо.