【问题标题】:How to pass settings to Nservicebus JsonSerializer in C#?如何在 C# 中将设置传递给 Nservicebus JsonSerializer?
【发布时间】:2016-12-14 16:37:11
【问题描述】:

基于https://docs.particular.net/nservicebus/serialization/json,我想将一些设置传递给JsonSerializer,例如IgnoreNullValues。 但到目前为止,我还没有找到任何关于如何将设置传递给序列化程序的示例。

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 的可用设置列表。

谢谢。

【问题讨论】:

    标签: c# nservicebus jsonserializer


    【解决方案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,因此您的里程可能会有所不同。

    【讨论】:

    • 我见过这个解决方案,但它使用的是NewtonsoftSerializer,它是一个单独的包。我试图使用 nsb 默认提供的 JsonSerializer。还是谢谢。
    • @znn 默认情况下,JSON.NET 被内化到 NServiceBus 中,这意味着您无法在其上设置任何选项或真正访问其 API。这就是 NewtonsoftSerializer 存在的原因,它允许您使用项目中的外部 JSON.NET 包并进行任何您想要的设置。
    【解决方案2】:

    来自 David Boike 的评论,这正是我的问题的答案:

    默认情况下,JSON.NET 被内化到 NServiceBus 中,这意味着您无法在其上设置任何选项,或者根本无法真正访问其 API。这就是 NewtonsoftSerializer 存在的原因,它允许您使用项目中的外部 JSON.NET 包并进行任何您想要的设置。

    【讨论】:

      猜你喜欢
      • 2014-05-03
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      • 2017-01-04
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 2020-05-25
      相关资源
      最近更新 更多