我正在使用版本2.8的Symfony 2项目,我正在使用内置组件Serializer - > http://symfony.com/doc/current/components/serializer.html
我有一个由Web服务提供的JSON结构.反序列化后,我想在对象中反规范化我的内容.这是我的结构(汽车应用程序上下文中的模型/品牌).
[{
"0": {
"id": 0,
"code": 1,
"model": "modelA",
"make": {
"id": 0,
"code": 1,
"name": "makeA"
}
}
} , {
"1": {
"id": 1,
"code": 2,
"model": "modelB",
"make": {
"id": 0,
"code": 1,
"name": "makeA"
}
}
}]
Run Code Online (Sandbox Code Playgroud)
我的想法是填充一个VehicleModel包含对象引用的VehicleMake对象.
class VehicleModel {
public $id;
public $code;
public $model;
public $make; // VehicleMake
}
Run Code Online (Sandbox Code Playgroud)
这是我做的:
// Retrieve data in JSON
$data = ...
$serializer = new Serializer([new ObjectNormalizer(), …Run Code Online (Sandbox Code Playgroud) 参加以下 DTO 课程:
class UserDTO {
/**
* @param AddressDTO[] $addressBook
*/
public function __construct(
public string $name,
public int $age,
public ?AddressDTO $billingAddress,
public ?AddressDTO $shippingAddress,
public array $addressBook,
) {
}
}
class AddressDTO {
public function __construct(
public string $street,
public string $city,
) {
}
}
Run Code Online (Sandbox Code Playgroud)
我想将它们序列化为 JSON 或反序列化为 JSON。
我正在使用以下序列化器配置:
$encoders = [new JsonEncoder()];
$extractor = new PropertyInfoExtractor([], [
new PhpDocExtractor(),
new ReflectionExtractor(),
]);
$normalizers = [
new ObjectNormalizer(null, null, null, $extractor),
new ArrayDenormalizer(),
]; …Run Code Online (Sandbox Code Playgroud)