bli*_*n12 5 php serialization json symfony
有人可以帮我弄这个吗?我正在尝试使用 Symfony Serializer 将对象序列化为 json,它确实将对象转换为 json,但它不会将对象数组从驼峰式大小写转换为蛇形大小写。
我目前在 Symfony 3.3 中使用默认的序列化程序
下面是我的代码。
framework:
serializer:
enabled: true
name_converter: 'serializer.name_converter.camel_case_to_snake_case'
Run Code Online (Sandbox Code Playgroud)
services:
get_set_method_normalizer:
class:Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
public: true
tags: [serializer.normalizer]
Run Code Online (Sandbox Code Playgroud)
人员.php
class Person{
private $firstName;
private $lastName;
private $email;
//setters and getters
}
Run Code Online (Sandbox Code Playgroud)
个人控制器.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"));
}
}
Run Code Online (Sandbox Code Playgroud)
下面是当前的输出。
[
{
"firstName":"test",
"lastName":"test"
"email":"test@test.com"
},
{
"firstName":"test 1",
"lastName":"test 1"
"email":"test@test.com"
}
]
Run Code Online (Sandbox Code Playgroud)
预期输出将是:
[
{
"first_name":"test",
"last_name":"test",
"email":"test@test.com"
},
{
"first_name":"test 1",
"last_name":"test 1",
"email":"test1@test.com"
}
]
Run Code Online (Sandbox Code Playgroud)
小智 2
尝试显式传递您的服务的参数:
get_set_method_normalizer:
class:Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
public: true
arguments: ['@serializer.mapping.class_metadata_factory', '@serializer.name_converter.camel_case_to_snake_case']
tags: [serializer.normalizer]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2700 次 |
| 最近记录: |