diff --git a/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/JsonSerializerDataContractResolver.cs b/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/JsonSerializerDataContractResolver.cs index 3e2a6404aa..1539afaea1 100644 --- a/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/JsonSerializerDataContractResolver.cs +++ b/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/JsonSerializerDataContractResolver.cs @@ -142,6 +142,12 @@ public bool IsSupportedCollection(Type type, out Type itemType) } #endif + if (type.IsArray) + { + itemType = type.GetElementType(); + return true; + } + if (typeof(IEnumerable).IsAssignableFrom(type)) { itemType = typeof(object); diff --git a/test/Swashbuckle.AspNetCore.Newtonsoft.Test/SchemaGenerator/NewtonsoftSchemaGeneratorTests.cs b/test/Swashbuckle.AspNetCore.Newtonsoft.Test/SchemaGenerator/NewtonsoftSchemaGeneratorTests.cs index c726decdd0..87a89faefa 100644 --- a/test/Swashbuckle.AspNetCore.Newtonsoft.Test/SchemaGenerator/NewtonsoftSchemaGeneratorTests.cs +++ b/test/Swashbuckle.AspNetCore.Newtonsoft.Test/SchemaGenerator/NewtonsoftSchemaGeneratorTests.cs @@ -578,6 +578,18 @@ public void GenerateSchema_HandlesTypesWithNestedTypes() Assert.Equal("NestedType", schema.Properties["Property1"].Reference.Id); } + [Fact] + public void GenerateSchema_HandlesSquareArray() + { + var schemaRepository = new SchemaRepository(); + + var referenceSchema = Subject().GenerateSchema(typeof(string[,]), schemaRepository); + + Assert.NotNull(referenceSchema.Items); + Assert.NotNull(referenceSchema.Items.Type); + Assert.Equal("string", referenceSchema.Items.Type); + } + [Fact] public void GenerateSchema_HandlesTypesWithOverriddenProperties() { diff --git a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SchemaGenerator/JsonSerializerSchemaGeneratorTests.cs b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SchemaGenerator/JsonSerializerSchemaGeneratorTests.cs index ebd1f0d895..1aabbb09df 100644 --- a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SchemaGenerator/JsonSerializerSchemaGeneratorTests.cs +++ b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SchemaGenerator/JsonSerializerSchemaGeneratorTests.cs @@ -1064,6 +1064,18 @@ public void GenerateSchema_HandlesTypesWithNestedTypes() Assert.Equal("NestedType", schema.Properties["Property1"].Reference.Id); } + [Fact] + public void GenerateSchema_HandlesSquareArray() + { + var schemaRepository = new SchemaRepository(); + + var referenceSchema = Subject().GenerateSchema(typeof(string[,]), schemaRepository); + + Assert.NotNull(referenceSchema.Items); + Assert.NotNull(referenceSchema.Items.Type); + Assert.Equal("string", referenceSchema.Items.Type); + } + [Fact] public void GenerateSchema_HandlesRecursion_IfCalledAgainWithinAFilter() {