public function testToArrayConversNestedArrayObjects() { $list = new AuthorList(); $list->add(new Author(null)); $result = $this->serializer->toArray($list); $this->assertSame(array('authors' => array(array())), $result); }
protected function setUp() { $this->factory = new MetadataFactory(new AnnotationDriver(new AnnotationReader())); $this->handlerRegistry = new HandlerRegistry(); $this->handlerRegistry->registerSubscribingHandler(new ConstraintViolationHandler()); $this->handlerRegistry->registerSubscribingHandler(new DateHandler()); $this->handlerRegistry->registerSubscribingHandler(new FormErrorHandler(new IdentityTranslator(new MessageSelector()))); $this->handlerRegistry->registerSubscribingHandler(new PhpCollectionHandler()); $this->handlerRegistry->registerSubscribingHandler(new ArrayCollectionHandler()); $this->handlerRegistry->registerHandler(GraphNavigator::DIRECTION_SERIALIZATION, 'AuthorList', $this->getFormat(), function (VisitorInterface $visitor, $object, array $type, Context $context) { return $visitor->visitArray(iterator_to_array($object), $type, $context); }); $this->handlerRegistry->registerHandler(GraphNavigator::DIRECTION_DESERIALIZATION, 'AuthorList', $this->getFormat(), function (VisitorInterface $visitor, $data, $type, Context $context) { $type = array('name' => 'array', 'params' => array(array('name' => 'integer', 'params' => array()), array('name' => 'JMS\\Serializer\\Tests\\Fixtures\\Author', 'params' => array()))); $elements = $visitor->getNavigator()->accept($data, $type, $context); $list = new AuthorList(); foreach ($elements as $author) { $list->add($author); } return $list; }); $this->dispatcher = new EventDispatcher(); $this->dispatcher->addSubscriber(new DoctrineProxySubscriber()); $namingStrategy = new SerializedNameAnnotationStrategy(new CamelCaseNamingStrategy()); $objectConstructor = new UnserializeObjectConstructor(); $this->serializationVisitors = new Map(array('json' => new JsonSerializationVisitor($namingStrategy), 'xml' => new XmlSerializationVisitor($namingStrategy), 'yml' => new YamlSerializationVisitor($namingStrategy))); $this->deserializationVisitors = new Map(array('json' => new JsonDeserializationVisitor($namingStrategy), 'xml' => new XmlDeserializationVisitor($namingStrategy))); $this->serializer = new Serializer($this->factory, $this->handlerRegistry, $objectConstructor, $this->serializationVisitors, $this->deserializationVisitors, $this->dispatcher); }
public function testAddLinksToOutput() { $this->dispatcher->addSubscriber(new LinkAddingSubscriber()); $this->handlerRegistry->registerHandler(GraphNavigator::DIRECTION_SERIALIZATION, 'JMS\\Serializer\\Tests\\Fixtures\\AuthorList', 'json', function (VisitorInterface $visitor, AuthorList $data, array $type) { return $visitor->visitArray(iterator_to_array($data), $type); }); $list = new AuthorList(); $list->add(new Author('foo')); $list->add(new Author('bar')); $this->assertEquals('[{"full_name":"foo","_links":{"details":"http:\\/\\/foo.bar\\/details\\/foo","comments":"http:\\/\\/foo.bar\\/details\\/foo\\/comments"}},{"full_name":"bar","_links":{"details":"http:\\/\\/foo.bar\\/details\\/bar","comments":"http:\\/\\/foo.bar\\/details\\/bar\\/comments"}}]', $this->serialize($list)); }
public function testReplaceNameInOutput() { $this->dispatcher->addSubscriber(new ReplaceNameSubscriber()); $this->handlerRegistry->registerHandler(GraphNavigator::DIRECTION_SERIALIZATION, 'JMS\\Serializer\\Tests\\Fixtures\\AuthorList', 'json', function (VisitorInterface $visitor, AuthorList $data, array $type, Context $context) { return $visitor->visitArray(iterator_to_array($data), $type, $context); }); $list = new AuthorList(); $list->add(new Author('foo')); $list->add(new Author('bar')); $this->assertEquals('[{"full_name":"new name"},{"full_name":"new name"}]', $this->serialize($list)); }