相关疑难解决方法(0)

使用symfony 2序列化器对对象中的嵌套结构进行非规范化

我正在使用版本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)

php json denormalization symfony

13
推荐指数
1
解决办法
8830
查看次数

如何使用 Symfony Serializer 反序列化通过提升属性在构造函数上声明的嵌套对象数组?

参加以下 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)

php serialization symfony symfony5

7
推荐指数
1
解决办法
6001
查看次数

标签 统计

php ×2

symfony ×2

denormalization ×1

json ×1

serialization ×1

symfony5 ×1