public function testNested() { $schema = '{ "properties": { "prop1": {}, "prop2": { "inner1": { "items": { "$ref": "#/definitions/location" } }, "inner2": {} }, "prop3": {}, "prop4": {} }, "definitions": { "location": { "properties": { "lat": {"type": "number"}, "lng": {"type": "number"} } } } }'; $data = '{ "prop4": null, "prop5": 5, "prop2": { "inner2": 2, "inner1": [ {"lng": 120, "lat": 50}, {"lat": 27, "lng": 3} ] }, "prop1": "", "prop3": [] }'; $expected = '{ "prop1": "", "prop2": { "inner1": [ {"lat": 50, "lng": 120}, {"lat": 27, "lng": 3} ], "inner2": 2 }, "prop3": [], "prop4": null, "prop5": 5 }'; $schema = $this->getSchemaObject($schema); $data = $this->fromJson($data); $expected = $this->fromJson($expected); $result = Utils::dataOrder($data, $schema); $this->assertEquals($expected, $result); }