JMSSerializer 结束行标志
JMSSerializer end line sign
我想在 symfony 中序列化实体。
配置 config/packages/jms_serializer.yaml
jms_serializer:
visitors:
xml:
format_output: '%kernel.debug%'
# metadata:
# auto_detection: false
# directories:
# any-name:
# namespace_prefix: "My\FooBundle"
# path: "@MyFooBundle/Resources/config/serializer"
# another-name:
# namespace_prefix: "My\BarBundle"
# path: "@MyBarBundle/Resources/config/serializer"
default_context:
serialization:
serialize_null: true
version: ~
enable_max_depth_checks: true
deserialization:
serialize_null: true
version: ~
enable_max_depth_checks: true
现在在控制器中 src/Controller/TempController.php
/**
* @Route("/tools/amm/{amm}", name="_amm")
*/
public function ammTestAction(AccessModule $amm, SerializerInterface $serializer){
$data = $serializer->serialize($amm, 'json');
dump($data);
print_r($data);
return $this->render('base.html.twig', ['data' => $data]);
}
这只是测试获取和序列化数据。目标是将序列化数据保存在数据库中。
在调试数据中,我有奇怪的 '\n' 字符,当我将其保存在数据库中时,它也会被插入。
分析器调试
"""
{\n
"id": 3,\n
"name": "Boss",\n
"children": [\n
{\n
"id": 4,\n
"name": "Technican Supervisor",\n
"children": [],\n
"parent": null,\n
"routes": []\n
},\n
{\n
"id": 5,\n
"name": "Office Supervisor",\n
"children": [],\n
"parent": null,\n
"routes": []\n
},\n
{\n
"id": 6,\n
"name": "Storage Supervisor",\n
"children": [],\n
"parent": null,\n
"routes": []\n
}\n
],\n
"parent": {\n
"id": 2,\n
"name": "Administrator",\n
"children": [\n
null\n
],\n
"parent": {\n
"id": 1,\n
"name": "System Administrator",\n
"children": [],\n
"parent": null,\n
"routes": []\n
},\n
"routes": [\n
null,\n
null\n
]\n
},\n
"routes": [\n
{\n
"id": 5,\n
"route": "api_admin_access_access_routes",\n
"name": "api_admin_access_access_routes",\n
"path": "/api/admin/access/routes",\n
"access_modules": []\n
}\n
]\n
}
"""
问题
我应该如何配置 jms_serializer 以防止插入行尾符号?
如果您使用 Composer Flex 来安装 JMS_Serializer,该配方会为开发环境设置一个配置,其中包含 JSON_PRETTY_PRINT。
因此,您必须编辑 config/packages/dev/jms_serializer.yaml 并删除 JSON_PRETTY_PRINT
您的文件应如下所示:
jms_serializer:
visitors:
json:
options:
- JSON_UNESCAPED_SLASHES
- JSON_PRESERVE_ZERO_FRACTION
在使用 FOS_Elastica & JMS_Serializer
时也很有用
我想在 symfony 中序列化实体。 配置 config/packages/jms_serializer.yaml
jms_serializer:
visitors:
xml:
format_output: '%kernel.debug%'
# metadata:
# auto_detection: false
# directories:
# any-name:
# namespace_prefix: "My\FooBundle"
# path: "@MyFooBundle/Resources/config/serializer"
# another-name:
# namespace_prefix: "My\BarBundle"
# path: "@MyBarBundle/Resources/config/serializer"
default_context:
serialization:
serialize_null: true
version: ~
enable_max_depth_checks: true
deserialization:
serialize_null: true
version: ~
enable_max_depth_checks: true
现在在控制器中 src/Controller/TempController.php
/**
* @Route("/tools/amm/{amm}", name="_amm")
*/
public function ammTestAction(AccessModule $amm, SerializerInterface $serializer){
$data = $serializer->serialize($amm, 'json');
dump($data);
print_r($data);
return $this->render('base.html.twig', ['data' => $data]);
}
这只是测试获取和序列化数据。目标是将序列化数据保存在数据库中。 在调试数据中,我有奇怪的 '\n' 字符,当我将其保存在数据库中时,它也会被插入。
分析器调试
"""
{\n
"id": 3,\n
"name": "Boss",\n
"children": [\n
{\n
"id": 4,\n
"name": "Technican Supervisor",\n
"children": [],\n
"parent": null,\n
"routes": []\n
},\n
{\n
"id": 5,\n
"name": "Office Supervisor",\n
"children": [],\n
"parent": null,\n
"routes": []\n
},\n
{\n
"id": 6,\n
"name": "Storage Supervisor",\n
"children": [],\n
"parent": null,\n
"routes": []\n
}\n
],\n
"parent": {\n
"id": 2,\n
"name": "Administrator",\n
"children": [\n
null\n
],\n
"parent": {\n
"id": 1,\n
"name": "System Administrator",\n
"children": [],\n
"parent": null,\n
"routes": []\n
},\n
"routes": [\n
null,\n
null\n
]\n
},\n
"routes": [\n
{\n
"id": 5,\n
"route": "api_admin_access_access_routes",\n
"name": "api_admin_access_access_routes",\n
"path": "/api/admin/access/routes",\n
"access_modules": []\n
}\n
]\n
}
"""
问题
我应该如何配置 jms_serializer 以防止插入行尾符号?
如果您使用 Composer Flex 来安装 JMS_Serializer,该配方会为开发环境设置一个配置,其中包含 JSON_PRETTY_PRINT。
因此,您必须编辑 config/packages/dev/jms_serializer.yaml 并删除 JSON_PRETTY_PRINT
您的文件应如下所示:
jms_serializer:
visitors:
json:
options:
- JSON_UNESCAPED_SLASHES
- JSON_PRESERVE_ZERO_FRACTION
在使用 FOS_Elastica & JMS_Serializer
时也很有用