2016-12-14 27 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包。 –