php - 如何使用 JMS 序列化器反序列化具有未知属性的 json?
问题描述
我正在尝试创建 DTO,这将帮助我反序列化嵌套的 JSON。我知道 JSON 的结构,但在某些嵌套步骤中,我不知道 JSON 属性的名称/索引。
JSON 看起来像:
{
"project": {
"layer": {
"480x960": [],
"720x360": [],
"...": [],
"...": []
}
}
}
但我不知道图层属性中的属性名称。
到目前为止,我有一些 DTO
项目 DTO:
namespace App\DTO;
use JMS\Serializer\Annotation as Serializer;
class Project
{
/**
* @var Layer
*
* @Serializer\Type("App\DTO\Layer")
*/
protected $layer;
}
层 DTO:(我坚持)
namespace App\DTO;
use Doctrine\Common\Collections\Collection;
use JMS\Serializer\Annotation as Serializer;
class Layer
{
// ???
}
我寻求实现类似的目标:$project->getLayer()将返回 Collection of objects ['480x960', '720x360', '...', etc.]。我不费心将那些未知属性的名称/索引保留在layer中。
解决方案
尝试这个。您不需要图层类。
use JMS\Serializer\Annotation as Serializer;
class Project
{
/**
* @Serializer\Type("array<string, array>")
*/
protected $layer;
}
推荐阅读
- go - 如何中断通道上的发送
- sql - 基于SQL Server中的分隔符将文本拆分为多列
- if-statement - 使用 IF 和 echo 命令输出打印/邮件
- android - 我想相对于弯曲导航栏的标签更改页面的应用栏标题
- java - 使用 mockito 在基于 JUnit5 的测试中模拟 API 响应:java.lang.NullPointerException
- css - 如何根据内容大小调整 flexbox 大小
- java - 使用 Java Config 的全局 CORS 配置在 Spring MVC 中不起作用
- python - 如何使用块标记大图像?
- c# - 杀死一个正在运行的进程
- r - R read_excel:如何关联 range=cell_cols 和 cell_type