Force Serializer Symfony返回数组而不是对象

时间:2015-12-02 16:01:03

标签: arrays symfony object serialization

有我的功能:

private function responseJson($datas, $code)
{
    $serializer = $this->container->get('jms_serializer');
    $context = new SerializationContext();
    $context->setSerializeNull(true);
    $response = new Response($serializer->serialize($datas, 'json', $context->enableMaxDepthChecks()), $code);
    $response->headers->set('Content-Type', 'application/json');
    return $response;
}

我使用symfony的序列化程序组件。这是我的服务器在调用此函数时所执行的操作。客户端需要一个数组,但服务器返回一个对象。是否可以强制返回数组?

感谢您的回答!

1 个答案:

答案 0 :(得分:1)

根据我在JsonSerializationVisitor中所读到的内容,实际编码是使用json_encode完成的:

$result = @json_encode($this->getRoot(), $this->options);

正如我在this post中所读到的那样,无法使用json_encode强制创建数组。

如果您的输入数据是没有索引的数组,那么json_encode将生成一个数组。这意味着如果数据中的密钥名称很重要,则无法将数组返回给客户端。