diff --git a/parser.go b/parser.go index 917e86fff..21e09f74e 100644 --- a/parser.go +++ b/parser.go @@ -1835,6 +1835,11 @@ func defineTypeOfExample(schemaType, arrayType, exampleValue string) (interface{ return result, nil case OBJECT: + // Handle empty object "{}" as a special case + if exampleValue == "{}" { + return map[string]any{}, nil + } + if arrayType == "" { return nil, fmt.Errorf("%s is unsupported type in example value `%s`", schemaType, exampleValue) } diff --git a/parser_test.go b/parser_test.go index 79a0ad9a4..a75e3c31d 100644 --- a/parser_test.go +++ b/parser_test.go @@ -3924,7 +3924,12 @@ func TestDefineTypeOfExample(t *testing.T) { t.Run("Object type", func(t *testing.T) { t.Parallel() - example, err := defineTypeOfExample("object", "", "key_one:one,key_two:two,key_three:three") + // Test empty object "{}" - issue #2018 + example, err := defineTypeOfExample("object", "", "{}") + assert.NoError(t, err) + assert.Equal(t, map[string]any{}, example) + + example, err = defineTypeOfExample("object", "", "key_one:one,key_two:two,key_three:three") assert.Error(t, err) assert.Nil(t, example) @@ -3945,6 +3950,13 @@ func TestDefineTypeOfExample(t *testing.T) { } assert.Equal(t, obj, map[string]string{"key_one": "one", "key_two": "two", "key_three": "three"}) + + // Test map[string]struct{} with empty object values - issue #2018 + example, err = defineTypeOfExample("object", "object", "key1:{},key2:{}") + assert.NoError(t, err) + objMap := example.(map[string]interface{}) + assert.Equal(t, map[string]any{}, objMap["key1"]) + assert.Equal(t, map[string]any{}, objMap["key2"]) }) t.Run("Invalid type", func(t *testing.T) {