我有一个只用作数组容器的类。
class Container {
private $things = array();
public function addThing($thing) {
$this->things[] = $thing;
return $this;
}
public function getThings() {
return $this->things;
}
}
我希望使用JMS \ Serializer将此类序列化为仅包含它的数组。为此,我使用了一个特殊的处理函数:
use JMS\Serializer\Annotation\HandlerCallback;
class Container {
// ...
/**
* @HandlerCallback("json", direction = "serialization")
*/
public function serializeToJson() {
return $this->things;
}
}
现在如果我跑
$container = new Container();
$container->addThing('something'); // optional
print_r($serializer->serialize($container, 'json'));
我的期望是我得到
[
'something'
]
但我得到的是null
。
我已经报告了问题here,但是有人知道这个问题的解决方法吗?我应该如何解决这个问题(不使用@HandlerCallback
或其他想法)以便我得到理想的结果?
谢谢!
答案 0 :(得分:0)
尝试使用作为方法参数传递的visitor对象,如下所示:
/** @HandlerCallback("json", direction = "serialization") */
public function serializeToJson(JsonSerializationVisitor $visitor)
{
$visitor->addData($this->things);
}
希望这个帮助