2016-12-14 46 views
0

根據https://docs.particular.net/nservicebus/serialization/json,我想將一些設置傳遞給JsonSerializer,例如IgnoreNullValues。 但到目前爲止,我沒有找到任何如何將設置傳遞給序列化程序的示例。如何將設置傳遞給C#中的Nservicebus JsonSerializer?

var serialization = endpointConfiguration.UseSerialization<JsonSerializer>(); 

//I would like to use something like below, 
//but I don't find any examples of how to pass settings to the JsonSerializer 
serialization.Settings.IgnoreNUllValues = true; 

我無法找到的是傳遞默認JsonSerializer的設置或可用設置列表的正確語法。

謝謝。

回答

0

從大衛Boike評論,這正是回答我的問題:

默認JSON.NET被內化爲NServiceBus,這意味着你不能設置任何選項它還是真的訪問它的API在所有。這就是爲什麼NewtonsoftSerializer存在的原因,允許您使用您的項目中使用任何設置的外部JSON.NET包。

1

按他們的documentation

var settings = new JsonSerializerSettings 
{ 
    TypeNameHandling = TypeNameHandling.Auto, 
    Converters = 
    { 
     new IsoDateTimeConverter 
     { 
      DateTimeStyles = DateTimeStyles.RoundtripKind 
     } 
    } 
}; 
var serialization = endpointConfiguration.UseSerialization<NewtonsoftSerializer>(); 
serialization.Settings(settings); 

這不使用NewtonsoftSerializer,而不是JsonSerializer的所以你的里程可能會有所不同。

+0

我見過這個解決方案,但它使用[NewtonsoftSerializer](https://docs.particular.net/nservicebus/serialization/newtonsoft)這是一個單獨的包。我試圖使用默認使用nsb的[JsonSerializer](https://docs.particular.net/nservicebus/serialization/json)。不管怎麼說,還是要謝謝你。 – znn

+2

@znn默認情況下,JSON.NET被內化到NServiceBus中,這意味着你不能在其上設置任何選項或根本不能訪問它的API。這就是爲什麼NewtonsoftSerializer存在的原因,允許您使用您的項目中使用任何設置的外部JSON.NET包。 –