1 回答
TA贡献1824条经验 获得超5个赞
从原始 JSON 输入反规范化
如果您从 API 获取信息,您可能会取消 JSON 转换并直接处理输入,因为 API 很可能不是向您发送本机数组,而是您正在转换为数组的 JSON观点
Serializer 组件也可以直接处理数组。
假设输入 JSON 如下:
$data = '[
{
"name": "Mary"
},
{
"name": "Jane",
},
{
"name": "Alice"
}
]';
你可以打电话deserialize()说你期望Contact[]在你的输入数据中:
$contacts = $serializer->deserialize($data, Contact::class . '[]', 'json');
这将Contact一步一步为您提供一个数组。
从数组到对象的非规范化
如果由于某种原因原始输入不可用或不易序列化,并且您确实需要一个一个地从数组转换为对象,并且您的对象具有与您在问题中显示的设置器类似的设置器;您可以简单地使用GetSetMethodNormalizer(比 Serializer 组件内部使用的规范化器之一)。
例如:
$contacts = [
['name' => 'Mary'],
['name' => 'Jane'],
['name' => 'Alice'],
];
$normalizer = new GetSetMethodNormalizer();
foreach($contacts as $arrayContact){
$contact = $normalizer->denormalize(Contact::class, $arrayContact);
// do something with $contact;
}
- 1 回答
- 0 关注
- 219 浏览
添加回答
举报