如何在ZF2中使用JsonModel返回没有Uniocde符号的JSON?

时间:2016-05-22 18:18:02

标签: php json unicode zend-framework2

我有一个对象数组,我想将它作为JSON返回给客户端的浏览器。

将数组解析为JSON的代码如下:

public static function parse(array $data){

    $parsed = array();

    foreach ($data as $entity){
        $reflection = new \ReflectionClass($entity);
        $arrayObject = array();

        foreach($reflection->getProperties() as $property){
            $property->setAccessible(true);
            $arrayObject[$property->getName()] = $property->getValue($entity);
            $property->setAccessible(false);
        }

        array_push($parsed, $arrayObject);
    }

    $parsed = json_encode($parsed);


    return $parsed;
}

我正在使用这个静态方法,因为当比例不公开时,简单地将对象转换为数组会给出空字节键。到目前为止一切正常,我正在尝试使用JsonModel返回已解析的数组。

return new JsonModel(
    array(
        'data' => ObjectToJsonParser::parse($match)
    ));

在Firebug中,我收到了正确的JSON响应,但是有了Unicodes符号的内容是错误的。

enter image description here如何在没有这些Unicode符号的情况下正确返回JSON?

1 个答案:

答案 0 :(得分:0)

如果您要对unicode字符进行编码,则应在json_encode函数中调用parse时使用JSON_UNESCAPED_UNICODE选项。

就像这样:

$parsed = json_encode($parsed, JSON_UNESCAPED_UNICODE);

您可以使用此功能返回响应,而不使用JsonModel

return $this->getResponse()->setContent(ObjectToJsonParser::parse($match));