php - 如何让 JMS/Serializer 将此属性反序列化为对象?
问题描述
我有以下课程
use JMS\Serializer\Annotation as Serializer;
use JMS\Serializer\Annotation\ExclusionPolicy;
use JMS\Serializer\Annotation\Type;
/**
* @ExclusionPolicy("none")
*/
class SalesOrderGetResponse
{
/**
* @Type("array<Vendor\Module\Model\SalesOrder>")
* @var SalesOrder[]
*/
public $mvSalesOrders = [];
/**
* @Serializer\Type("Vendor\Module\Model\SalesOrderGetResponseStatus")
* @var SalesOrderGetResponseStatus
*/
public $ResponseStatus;
}
而这堂课
use JMS\Serializer\Annotation as Serializer;
/**
* @Serializer\ExclusionPolicy("none")
*/
class SalesOrderGetResponseStatus
{
const ERROR_CODE_SUCCESS = 0;
/**
* @Serializer\Type("string")
* @var string
*/
public $ErrorCode;
}
我正在尝试使用 JMS 序列化程序作为独立库将以下 JSON 对象反序列化为一个类。
{
"mvSalesOrders": [
],
"ResponseStatus": {
"ErrorCode": "0"
}
}
像这样
$classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
$encoders = [new JsonEncoder()];
$normalizers = [new ObjectNormalizer($classMetadataFactory)];
$serializer = new \Symfony\Component\Serializer\Serializer($normalizers, $encoders);
$result = new SalesOrderGetResponse();
$serializer->deserialize($resultJson, SalesOrderGetResponse::class, 'json', [AbstractNormalizer::OBJECT_TO_POPULATE => $result]);
但是,当我得到反序列化的结果时, ResponseStatus 属性始终是一个数组而不是类的实例SalesOrderGetResponseStatus
我在这里想念什么?
解决方案
推荐阅读
- excel-2010 - 使用 Excel 2010 查找文本和值
- reactjs - 上传到s3,响应对象
- karate - 更改司机位置
- reactjs - 使用登录功能在 React JS 中路由组件
- javascript - JS字典列表,按条件获取第一个值
- html - 为什么过渡在 Safari 浏览器中不起作用?
- substrate - 一个人如何正确地停止一个基板节点
- c++ - cmake 从对象库构建共享库会导致未定义的符号
- docker - 为什么 Jenkins job-dsl 插件因错误而失败:java.io.IOException: Failed to persist config.xml
- java - WSDL 解析导致到 weblogic12 上 w3.org 的出站 Internet 连接