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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions