我有一个对象数组,我想将它作为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符号的内容是错误的。
答案 0 :(得分:0)
如果您要对unicode字符进行编码,则应在json_encode
函数中调用parse
时使用JSON_UNESCAPED_UNICODE选项。
就像这样:
$parsed = json_encode($parsed, JSON_UNESCAPED_UNICODE);
您可以使用此功能返回响应,而不使用JsonModel
:
return $this->getResponse()->setContent(ObjectToJsonParser::parse($match));