diff --git a/src/DotSwashbuckle.AspNetCore.Newtonsoft/SchemaGenerator/NewtonsoftDataContractResolver.cs b/src/DotSwashbuckle.AspNetCore.Newtonsoft/SchemaGenerator/NewtonsoftDataContractResolver.cs index 0eae977c90..1d849d5d9d 100644 --- a/src/DotSwashbuckle.AspNetCore.Newtonsoft/SchemaGenerator/NewtonsoftDataContractResolver.cs +++ b/src/DotSwashbuckle.AspNetCore.Newtonsoft/SchemaGenerator/NewtonsoftDataContractResolver.cs @@ -72,6 +72,15 @@ public DataContract GetDataContractForType(Type type) jsonConverter: JsonConverterFunc); } + if (JsonSerializerDataContractResolver.IsSupportedDictionary(type, out Type _, out Type valueType1)) + { + return DataContract.ForDictionary( + underlyingType: type, + valueType: valueType1, + keys: null, // STJ doesn't currently support dictionaries with enum key types + jsonConverter: JsonConverterFunc); + } + if (JsonSerializerDataContractResolver.IsSupportedCollection(type, out Type itemType)) { return DataContract.ForArray( diff --git a/src/DotSwashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/JsonSerializerDataContractResolver.cs b/src/DotSwashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/JsonSerializerDataContractResolver.cs index 8e3ac9516d..0b479c76c8 100644 --- a/src/DotSwashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/JsonSerializerDataContractResolver.cs +++ b/src/DotSwashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/JsonSerializerDataContractResolver.cs @@ -83,7 +83,7 @@ private string JsonConverterFunc(object value) return JsonSerializer.Serialize(value, _serializerOptions); } - public bool IsSupportedDictionary(Type type, out Type keyType, out Type valueType) + public static bool IsSupportedDictionary(Type type, out Type keyType, out Type valueType) { if (type.IsConstructedFrom(typeof(IDictionary<,>), out Type constructedType) || type.IsConstructedFrom(typeof(IReadOnlyDictionary<,>), out constructedType))