diff --git a/src/ContentValidationMiddleware.php b/src/ContentValidationMiddleware.php index 5840949..37b5c8e 100644 --- a/src/ContentValidationMiddleware.php +++ b/src/ContentValidationMiddleware.php @@ -124,11 +124,19 @@ function (ValidationError $error) { ], 422); } - private static function object2Array(object $data): array + /** + * @param object|array $data + * @return mixed + */ + private static function object2Array($data) { - $data = (array) $data; - foreach ($data as $key => $value) { - if (is_object($value)) { + if (is_object($data)) { + $data = (array) $data; + foreach ($data as $key => $value) { + $data[$key] = self::object2Array($value); + } + } elseif (is_array($data)) { + foreach ($data as $key => $value) { $data[$key] = self::object2Array($value); } } diff --git a/src/Opis/TransformersParser.php b/src/Opis/TransformersParser.php index 7d4a35a..9063871 100644 --- a/src/Opis/TransformersParser.php +++ b/src/Opis/TransformersParser.php @@ -14,6 +14,7 @@ class TransformersParser extends KeywordParser { use VariablesTrait; + private Resolver\ResolverInterface $resolver; private string $type; diff --git a/test/ContentValidationMiddlewareTest.php b/test/ContentValidationMiddlewareTest.php index a8d7935..0ccaf08 100644 --- a/test/ContentValidationMiddlewareTest.php +++ b/test/ContentValidationMiddlewareTest.php @@ -72,7 +72,7 @@ public function invokeProvider(): array [], [], [], - ['name' => 'foo', 'age' => '18', 'sub' => ['foo' => '123']] + ['name' => 'foo', 'age' => '18', 'sub' => ['foo' => '123'], 'list-obj' => [[['id' => 1]]]] ), ], 'HttpPostInvalid' => [ diff --git a/test/test.json b/test/test.json index b98d226..1cf789d 100644 --- a/test/test.json +++ b/test/test.json @@ -58,6 +58,20 @@ "type": "integer" } } + }, + "list-obj": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer" + } + } + } + } } }, "required": ["name", "age"],