public CompactSchemaGenerator(JsonSerializer jsonSerializer, MetadataJsonSerializationOptions metadataJsonSerializationOptions) { _jsonSerializer = jsonSerializer; _metadataJsonSerializationOptions = metadataJsonSerializationOptions; NamingStrategy namingStrategy = (_jsonSerializer.ContractResolver as DefaultContractResolver)?.NamingStrategy ?? new DefaultNamingStrategy(); GetJsonPropertyName = (name) => namingStrategy.GetPropertyName(name, false); }
/// <summary> /// Configures <see cref="JsonSerializerOptions"/> to serialize <see cref="IPropertyContainer"/>. /// </summary> /// <param name="options"><see cref="JsonSerializerOptions"/> instance.</param> /// <param name="configureMetadataJson">Configure Metadata Json serialization.</param> /// <returns>The same options.</returns> public static JsonSerializerOptions ConfigureJsonForPropertyContainers( this JsonSerializerOptions options, Action <MetadataJsonSerializationOptions>?configureMetadataJson = null) { bool added = options.Converters.Any(converter => converter.GetType() == typeof(PropertyContainerConverterFactory)); if (!added) { MetadataJsonSerializationOptions?metadataJsonSerializationOptions = null; if (configureMetadataJson != null) { metadataJsonSerializationOptions = new MetadataJsonSerializationOptions(); configureMetadataJson(metadataJsonSerializationOptions); } options.Converters.Add(new PropertyContainerConverterFactory(metadataJsonSerializationOptions)); } return(options); }
/// <summary> /// Initializes a new instance of the <see cref="PropertyContainerConverter{TPropertyContainer}"/> class. /// </summary> /// <param name="options">Metadata json serializer options.</param> public PropertyContainerConverter(MetadataJsonSerializationOptions?options = null) { OutputType = typeof(TPropertyContainer); Options = options.Copy(); }
/// <summary> /// Initializes a new instance of the <see cref="MetadataSchemaProviderConverter"/> class. /// </summary> /// <param name="options">Serialization options.</param> public MetadataSchemaProviderConverter(MetadataJsonSerializationOptions options) { Options = options.Copy(); }
/// <summary> /// Initializes a new instance of the <see cref="PropertyContainerConverter"/> class. /// </summary> /// <param name="options">Metadata json serializer options.</param> public PropertyContainerConverter(MetadataJsonSerializationOptions?options = null) { Options = options.Copy(); }