如何在 C# 中将设置传递给 Nservicebus JsonSerializer?
How to pass settings to Nservicebus JsonSerializer in C#?
基于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 的可用设置列表。
谢谢。
根据他们的 documentation:
var settings = new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto,
Converters =
{
new IsoDateTimeConverter
{
DateTimeStyles = DateTimeStyles.RoundtripKind
}
}
};
var serialization = endpointConfiguration.UseSerialization<NewtonsoftSerializer>();
serialization.Settings(settings);
这确实使用了 NewtonsoftSerializer,而不是 JsonSerializer,因此您的情况可能会有所不同。
来自 David Boike 的评论,这正是我的问题的答案:
默认情况下 JSON.NET 被内化到 NServiceBus 中,这意味着您不能在其上设置任何选项 或根本无法真正访问其 API。这就是 NewtonsoftSerializer 存在的原因,它允许您使用项目中的外部 JSON.NET 程序包以及您想要的任何设置。
基于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 的可用设置列表。
谢谢。
根据他们的 documentation:
var settings = new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto,
Converters =
{
new IsoDateTimeConverter
{
DateTimeStyles = DateTimeStyles.RoundtripKind
}
}
};
var serialization = endpointConfiguration.UseSerialization<NewtonsoftSerializer>();
serialization.Settings(settings);
这确实使用了 NewtonsoftSerializer,而不是 JsonSerializer,因此您的情况可能会有所不同。
来自 David Boike 的评论,这正是我的问题的答案:
默认情况下 JSON.NET 被内化到 NServiceBus 中,这意味着您不能在其上设置任何选项 或根本无法真正访问其 API。这就是 NewtonsoftSerializer 存在的原因,它允许您使用项目中的外部 JSON.NET 程序包以及您想要的任何设置。