I'd like to serialize entities in symfony. config 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
Now in contoller 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]);
}
This is only test getting and serializig data. The goal is to save serialized data in database. In debug data I have strange '\n' characters and when I save this in database this is inserted too.
profiler debug
"""
{\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
}
"""
Question
How should I configure jms_serializer to prevent inserting end of line sign?
If you use Composer Flex to install JMS_Serializer, the recipe set a config for dev environment with JSON_PRETTY_PRINT in it.
So, you have to edit config/packages/dev/jms_serializer.yaml and remove JSON_PRETTY_PRINT
Your file should look like that :
jms_serializer:
visitors:
json:
options:
- JSON_UNESCAPED_SLASHES
- JSON_PRESERVE_ZERO_FRACTION
It's also usefull when using FOS_Elastica & JMS_Serializer