diff --git a/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/JsonSerializerDataContractResolver.cs b/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/JsonSerializerDataContractResolver.cs index bc0ad6302..6ae982025 100644 --- a/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/JsonSerializerDataContractResolver.cs +++ b/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/JsonSerializerDataContractResolver.cs @@ -65,6 +65,13 @@ public DataContract GetDataContractForType(Type type) arrayItemType: itemType); } + if (underlyingType.IsOneOf(typeof(JsonDocument), typeof(JsonElement))) + { + return new DataContract( + dataType: DataType.Unknown, + underlyingType: underlyingType); + } + return new DataContract( dataType: DataType.Object, underlyingType: underlyingType, diff --git a/test/Swashbuckle.AspNetCore.Newtonsoft.Test/SchemaGenerator/NewtonsoftSchemaGeneratorTests.cs b/test/Swashbuckle.AspNetCore.Newtonsoft.Test/SchemaGenerator/NewtonsoftSchemaGeneratorTests.cs index 58de98a95..ebbb7d6b4 100644 --- a/test/Swashbuckle.AspNetCore.Newtonsoft.Test/SchemaGenerator/NewtonsoftSchemaGeneratorTests.cs +++ b/test/Swashbuckle.AspNetCore.Newtonsoft.Test/SchemaGenerator/NewtonsoftSchemaGeneratorTests.cs @@ -640,6 +640,7 @@ public void GenerateSchema_GeneratesEmptySchema_IfJToken() { var schema = Subject().GenerateSchema(typeof(JToken), new SchemaRepository()); + Assert.Null(schema.Reference); Assert.Null(schema.Type); } diff --git a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SchemaGenerator/JsonSerializerSchemaGeneratorTests.cs b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SchemaGenerator/JsonSerializerSchemaGeneratorTests.cs index f5629938a..e856da4fb 100644 --- a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SchemaGenerator/JsonSerializerSchemaGeneratorTests.cs +++ b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SchemaGenerator/JsonSerializerSchemaGeneratorTests.cs @@ -603,6 +603,17 @@ public void GenerateSchema_HonorsSerializerAttribute_JsonExtensionData() Assert.Equal("object", schema.AdditionalProperties.Type); } + [Theory] + [InlineData(typeof(JsonDocument))] + [InlineData(typeof(JsonElement))] + public void GenerateSchema_GeneratesEmptySchema_IfDynamicJsonType(Type type) + { + var schema = Subject().GenerateSchema(type, new SchemaRepository()); + + Assert.Null(schema.Reference); + Assert.Null(schema.Type); + } + private SchemaGenerator Subject( Action configureGenerator = null, Action configureSerializer = null)