Подтвердить что ты не робот

Может ли Json.NET сериализоваться в потоке с форматированием?

При использовании библиотеки Json.NET вы можете указать форматирование, когда вы сериализуете строку, но я не могу найти этот параметр при сериализации непосредственно в потоке. Я что-то пропустил?

Код для двух методов сериализации выглядит следующим образом:

public static string Serialize(MyObject obj)
{
    JsonSerializerSettings settings = GetJsonSerializerSettings();
    return JsonConvert.SerializeObject(obj, Formatting.Indented, settings);
}

public static void SerializeToStream(MyObject obj, Stream stream)
{
    var serializer = JsonSerializer.Create(GetJsonSerializerSettings());

    using (var sw = new StreamWriter(stream))
    using (var jsonTextWriter = new JsonTextWriter(sw))
    {
        serializer.Serialize(jsonTextWriter, obj);
    }
}

private static JsonSerializerSettings GetJsonSerializerSettings()
{
    JsonSerializerSettings settings = new JsonSerializerSettings
    {
        Converters = new List<JsonConverter>
        {
            new StringEnumConverter()
        }
    };
    return settings;
}
4b9b3361

Ответ 1

Я не пробовал, но я ожидаю, что это будет хорошо, если вы укажете форматирование в настройках:

public static void SerializeToStream(MyObject obj, Stream stream)
{
    var settings = GetJsonSerializerSettings();
    settings.Formatting = Formatting.Indented;
    var serializer = JsonSerializer.Create(settings);

    using (var sw = new StreamWriter(stream))
    using (var jsonTextWriter = new JsonTextWriter(sw))
    {
        serializer.Serialize(jsonTextWriter, obj);
    }
}

(Или измените GetJsonSerializerSettings аналогичным образом, конечно.)