JsonDocument Получить строку JSON - PullRequest
0 голосов
/ 14 октября 2019

Мне нужен пример получения строки JSON из JsonDocument. Я могу получить свойства с помощью RootElement.GetProperty("ItemName"), а затем вызвать .GetString(), но не могу найти способ просто получить корневой элемент в виде строки JSON?

1 Ответ

1 голос
/ 14 октября 2019

Вот пример:

JsonDocument jdoc = JsonDocument.Parse("{\"a\":123}");

using(var stream = new MemoryStream())
{
    Utf8JsonWriter writer = new Utf8JsonWriter(stream, new JsonWriterOptions { Indented = true });
    jdoc.WriteTo(writer);
    writer.Flush();
    string json = Encoding.UTF8.GetString(stream.ToArray());
}

Для более простого использования вы можете поместить его в метод расширения, например:

public static string ToJsonString(this JsonDocument jdoc)
{
    using (var stream = new MemoryStream())
    {
        Utf8JsonWriter writer = new Utf8JsonWriter(stream, new JsonWriterOptions { Indented = true });
        jdoc.WriteTo(writer);
        writer.Flush();
        return Encoding.UTF8.GetString(stream.ToArray());
    }
}

И использовать его как:

JsonDocument jdoc = JsonDocument.Parse("{\"a\":123}");
string json = jdoc.ToJsonString();
...