2014-10-30 17 views
10

Json.NET kitaplığını kullanırken, dizgiyi serileştirirken biçimlendirmeyi belirtebilirsiniz, ancak doğrudan akışa serileştirirken bu seçeneği bulamıyorum. Bir şey mi eksik?Json.NET, Biçimlendirme ile akışa seri hale getirilebilir mi?

aşağıdaki gibi iki seri hale yöntemleri için kodudur: Ben denemedim

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

cevap

7

ama ayarlarda biçimini belirtmek olmadığını gayet iyi olmasını beklersiniz:

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

(Ya tabii ki, benzer şekilde GetJsonSerializerSettings değiştirin.)

+0

Merhaba! Sadece bu yöntemi 'statik' yaptığınızı merak ettiniz. Teşekkürler! – 8protons

+0

@ 8protons: Peki neden statik olmasını istemiyorsun? Herhangi bir durum durumuna erişmesi gerekmez ve bir arabirimi veya mirasın yararlı olduğu gibi bir şey uygulamıyor. –

+0

_ "Peki neden statik olmasını istemiyorsun?" _... Retorik soru neden? Ben soruyordum çünkü bilmiyordum. Konuyla ilgili otoritenizi sorgulamak için size gelmiyordu. – 8protons

İlgili konular