in src/Elastic.Apm/Libraries/Newtonsoft.Json/JsonSerializer.cs [598:649]
private static void ApplySerializerSettings(JsonSerializer serializer, JsonSerializerSettings settings)
{
if (!CollectionUtils.IsNullOrEmpty(settings.Converters))
{
// insert settings converters at the beginning so they take precedence
// if user wants to remove one of the default converters they will have to do it manually
for (var i = 0; i < settings.Converters.Count; i++) serializer.Converters.Insert(i, settings.Converters[i]);
}
// serializer specific
if (settings._typeNameHandling != null) serializer.TypeNameHandling = settings.TypeNameHandling;
if (settings._metadataPropertyHandling != null) serializer.MetadataPropertyHandling = settings.MetadataPropertyHandling;
if (settings._typeNameAssemblyFormatHandling != null) serializer.TypeNameAssemblyFormatHandling = settings.TypeNameAssemblyFormatHandling;
if (settings._preserveReferencesHandling != null) serializer.PreserveReferencesHandling = settings.PreserveReferencesHandling;
if (settings._referenceLoopHandling != null) serializer.ReferenceLoopHandling = settings.ReferenceLoopHandling;
if (settings._missingMemberHandling != null) serializer.MissingMemberHandling = settings.MissingMemberHandling;
if (settings._objectCreationHandling != null) serializer.ObjectCreationHandling = settings.ObjectCreationHandling;
if (settings._nullValueHandling != null) serializer.NullValueHandling = settings.NullValueHandling;
if (settings._defaultValueHandling != null) serializer.DefaultValueHandling = settings.DefaultValueHandling;
if (settings._constructorHandling != null) serializer.ConstructorHandling = settings.ConstructorHandling;
if (settings._context != null) serializer.Context = settings.Context;
if (settings._checkAdditionalContent != null) serializer._checkAdditionalContent = settings._checkAdditionalContent;
if (settings.Error != null) serializer.Error += settings.Error;
if (settings.ContractResolver != null) serializer.ContractResolver = settings.ContractResolver;
if (settings.ReferenceResolverProvider != null) serializer.ReferenceResolver = settings.ReferenceResolverProvider();
if (settings.TraceWriter != null) serializer.TraceWriter = settings.TraceWriter;
if (settings.EqualityComparer != null) serializer.EqualityComparer = settings.EqualityComparer;
if (settings.SerializationBinder != null) serializer.SerializationBinder = settings.SerializationBinder;
// reader/writer specific
// unset values won't override reader/writer set values
if (settings._formatting != null) serializer._formatting = settings._formatting;
if (settings._dateFormatHandling != null) serializer._dateFormatHandling = settings._dateFormatHandling;
if (settings._dateTimeZoneHandling != null) serializer._dateTimeZoneHandling = settings._dateTimeZoneHandling;
if (settings._dateParseHandling != null) serializer._dateParseHandling = settings._dateParseHandling;
if (settings._dateFormatStringSet)
{
serializer._dateFormatString = settings._dateFormatString;
serializer._dateFormatStringSet = settings._dateFormatStringSet;
}
if (settings._floatFormatHandling != null) serializer._floatFormatHandling = settings._floatFormatHandling;
if (settings._floatParseHandling != null) serializer._floatParseHandling = settings._floatParseHandling;
if (settings._stringEscapeHandling != null) serializer._stringEscapeHandling = settings._stringEscapeHandling;
if (settings._culture != null) serializer._culture = settings._culture;
if (settings._maxDepthSet)
{
serializer._maxDepth = settings._maxDepth;
serializer._maxDepthSet = settings._maxDepthSet;
}
}