From c63a6e43bda881e46f4097266c81315d6ece5463 Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Wed, 12 Nov 2025 11:21:28 -0800 Subject: [PATCH 1/3] bugfix: remove restriction on additionalProperties types Fixes https://github.com/omissis/go-jsonschema/issues/490 Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- pkg/generator/schema_generator.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pkg/generator/schema_generator.go b/pkg/generator/schema_generator.go index db5dc923..a4d8f1b1 100644 --- a/pkg/generator/schema_generator.go +++ b/pkg/generator/schema_generator.go @@ -13,8 +13,7 @@ import ( ) var ( - errEmptyInAnyOf = errors.New("cannot have empty anyOf array") - errTooManyTypesForAdditionalProperties = errors.New("cannot support multiple types for additional properties") + errEmptyInAnyOf = errors.New("cannot have empty anyOf array") ) const float64Type = "float64" @@ -700,15 +699,10 @@ func (g *schemaGenerator) generateStructType(t *schemas.Type, scope nameScope) ( // Checking .Not here because `false` is unmarshalled to .Not = Type{}. if t.AdditionalProperties != nil && t.AdditionalProperties.Not == nil { - if len(t.AdditionalProperties.Type) > 1 { - return nil, errTooManyTypesForAdditionalProperties - } - var ( defaultValue any = nil fieldType codegen.Type = codegen.EmptyInterfaceType{} ) - if len(t.AdditionalProperties.Type) == 1 { switch t.AdditionalProperties.Type[0] { case schemas.TypeNameString: From db05a1e0ff65d73d9d215227812f0a70066ddd95 Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Thu, 13 Nov 2025 09:11:27 -0800 Subject: [PATCH 2/3] fix lint Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- pkg/generator/schema_generator.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkg/generator/schema_generator.go b/pkg/generator/schema_generator.go index a4d8f1b1..3a852040 100644 --- a/pkg/generator/schema_generator.go +++ b/pkg/generator/schema_generator.go @@ -12,9 +12,7 @@ import ( "github.com/atombender/go-jsonschema/pkg/schemas" ) -var ( - errEmptyInAnyOf = errors.New("cannot have empty anyOf array") -) +var errEmptyInAnyOf = errors.New("cannot have empty anyOf array") const float64Type = "float64" From de123fde30cb59fdc6c38612534b4dd22657a426 Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:23:10 -0800 Subject: [PATCH 3/3] fix lint Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- pkg/generator/schema_generator.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/generator/schema_generator.go b/pkg/generator/schema_generator.go index 3a852040..7116f533 100644 --- a/pkg/generator/schema_generator.go +++ b/pkg/generator/schema_generator.go @@ -701,6 +701,7 @@ func (g *schemaGenerator) generateStructType(t *schemas.Type, scope nameScope) ( defaultValue any = nil fieldType codegen.Type = codegen.EmptyInterfaceType{} ) + if len(t.AdditionalProperties.Type) == 1 { switch t.AdditionalProperties.Type[0] { case schemas.TypeNameString: