Skip to content

Definitions property is expected to be an object, not an array #162

@uuf6429

Description

@uuf6429

When I try creating a schema with an array/hashmap of definitions it complains that definitions was expected to be an object.

JsonSchema\Schema::import((object)[
    'definitions' => [
        'aaa' => JsonSchema\Schema::import((object)['type' => 'object'])
    ]
]);

Swaggest\JsonSchema\Exception\TypeException: Object expected, {"aaa":{"type":"object"}} received at #->properties:definitions

Typecasting that array to an object fixes the problem (it actually shows a different error, but that's irrelevant):

JsonSchema\Schema::import((object)[
    'definitions' => (object)[       //    <------
        'aaa' => JsonSchema\Schema::import((object)['type' => 'object'])
    ]
]);

So I believe the PHPDoc here is wrong:

/** @var JsonSchema[] */

In this case it would have been object<string, JsonSchema>, but that's not a supported syntax. So maybe either \ArrayObject<string, JsonSchema> or simply an \object with an explanatory description.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions