Json.NET可以序列化以使用Formatting流化吗? [英] Can Json.NET serialize to stream with Formatting?

查看:86
本文介绍了Json.NET可以序列化以使用Formatting流化吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用Json.NET库时,可以在序列化为字符串时指定格式,但是在直接序列化为流时,我找不到此选项.我想念什么吗?

When using Json.NET library, you can specify formatting when you are serialising to string, but I can't find this option when serialising directly to stream. Am I missing something?

这两种序列化方法的代码如下:

The code for the two serialisation methods is as follows:

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;
}

推荐答案

我还没有尝试过,但是如果您在设置中指定格式,我希望它会很好:

I haven't tried it, but I'd expect it to be fine if you specify the formatting in the settings:

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.)

(Or change GetJsonSerializerSettings in a similar way, of course.)

这篇关于Json.NET可以序列化以使用Formatting流化吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆