php - Symfony Serializer 不会将对象数组从 camelCase 转换为 snake_case

标签 php json symfony serialization

有人可以帮我解决这个问题吗? 我正在尝试使用 Symfony Serializer 将对象序列化为 json,它会将对象转换为 json,但不会将对象数组从 camelCase 转换为 snake_case。

我目前在 Symfony 3.3 中使用默认的 Serializer

下面是我的代码。

应用程序/配置/config.yml

 framework: 
  serializer:  
    enabled: true
    name_converter: 'serializer.name_converter.camel_case_to_snake_case'

应用程序/配置/services.yml

 services:
    get_set_method_normalizer:
        class:Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
        public: true
        tags: [serializer.normalizer]

Persons.php

class Person{
     private $firstName;
     private $lastName;
     private $email;

     //setters and getters
}

PersonController.php

class PersonController extends Controller {
     /**
      * @Route("api/person")
      * @Method("POST")
      */
     public function person(){
         $person = new Person();
          $person->setFirstName("test");
          $person->setLastName("test");
          $person->setEmail("test@test.com");

         $person1 = new Person();
         $person1->setFirstName("test 1");
          $person1->setLastName("test 1");
          $person1->setEmail("test1@test.com");
         $arr = array($person, $person1);
         $serializer = $this->get("serializer");
         return new Response($serializer->serialize($arr,"json"));
     }

}

下面是当前输出。

[
  {
     "firstName":"test",
     "lastName":"test"
     "email":"test@test.com"
  },
  {
     "firstName":"test 1",
     "lastName":"test 1"
     "email":"test@test.com"
  }
]

预期输出为:

 [
   {
      "first_name":"test",
      "last_name":"test",
      "email":"test@test.com"
   },
   {
      "first_name":"test 1",
      "last_name":"test 1",
      "email":"test1@test.com"
   }
]

最佳答案

对于 symfony 4 这对我有用:

Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer:
    public: true
    arguments: ['@serializer.mapping.class_metadata_factory', '@serializer.name_converter.camel_case_to_snake_case']
    tags: [serializer.normalizer]

将该代码放入您的 app/config/services.yaml 中的“服务”部分。

关于php - Symfony Serializer 不会将对象数组从 camelCase 转换为 snake_case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47487686/

相关文章:

php - php中的分页问题

python - 使用混合 Django 模型和字典的 Django JSON 序列化

php - 带有默认占位符的 symfony2 路由

symfony - Doctrine MappedSuperClass,覆盖自定义注解

php - 有什么方法可以在 Wordpress/WooCommerce 中获取产品图片/特色图片的绝对路径

php - 如果我单击选择按钮并将其值传递到文本框中,如何获取所选单选按钮的值?

json - XML 转换为 JSON R

symfony 验证器错误名称常量

php - 通过php或者jquery根据category生成html

javascript - 如何在 Javascript 中将表单数组转换为 JSON? (对象数组)?