@@ -531,6 +531,79 @@ processes::
531
531
$anne = $normalizer->denormalize(array('first_name' => 'Anne'), 'Person');
532
532
// Person object with firstName: 'Anne'
533
533
534
+ Configure name conversion using metadata
535
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
536
+
537
+ When using this component inside a Symfony application and the class metadata factory is enabled
538
+ as explained in the :ref: `Attributes Groups section <component-serializer-attributes-groups >`,
539
+ this is already set up and you only need to provide the configuration. Otherwise::
540
+
541
+ // ...
542
+ use Symfony\Component\Serializer\Encoder\JsonEncoder;
543
+ use Symfony\Component\Serializer\NameConverter\MetadataAwareNameConverter;
544
+ use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
545
+ use Symfony\Component\Serializer\Serializer;
546
+
547
+ $classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
548
+
549
+ $metadataAwareNameConverter = new MetadataAwareNameConverter($classMetadataFactory);
550
+
551
+ $serializer = new Serializer(
552
+ array(new ObjectNormalizer($classMetadataFactory, $metadataAwareNameConverter)),
553
+ array('json' => new JsonEncoder())
554
+ );
555
+
556
+ Now configure your name conversion mapping. Consider an application that
557
+ defines a ``Person `` entity with a ``firstName `` property:
558
+
559
+ .. configuration-block ::
560
+
561
+ .. code-block :: php-annotations
562
+
563
+ namespace App\Entity;
564
+
565
+ use Symfony\Component\Serializer\Annotation\SerializedName;
566
+
567
+ class Person
568
+ {
569
+ /**
570
+ * @SerializedName("firstname")
571
+ */
572
+ private $firstName;
573
+
574
+ public function __construct($firstName)
575
+ {
576
+ $this->firstName = $firstName;
577
+ }
578
+
579
+ // ...
580
+ }
581
+
582
+ .. code-block :: yaml
583
+
584
+ App\Entity\Person :
585
+ attributes :
586
+ firstName :
587
+ serialized_name : firstname
588
+
589
+ .. code-block :: xml
590
+
591
+ <?xml version =" 1.0" ?>
592
+ <serializer xmlns =" http://symfony.com/schema/dic/serializer-mapping"
593
+ xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
594
+ xsi : schemaLocation =" http://symfony.com/schema/dic/serializer-mapping
595
+ http://symfony.com/schema/dic/serializer-mapping/serializer-mapping-1.0.xsd"
596
+ >
597
+ <class name =" App\Entity\Person" >
598
+ <attribute name =" firstName" serialized-name =" firstname" />
599
+ </class >
600
+ </serializer >
601
+
602
+ Once configured, the serializer uses the mapping to convert pproperty names when serializing and deserializing::
603
+
604
+ $serialized = $serializer->serialize(new Person("Kévin"));
605
+ // {"firstname": "Kévin"}
606
+
534
607
Serializing Boolean Attributes
535
608
------------------------------
536
609
0 commit comments