2012-02-12 67 views
1

有了这个代码:Zend的JSON对象

(...)

<?php foreach($this->albums as $album) : 
$jsonalbum = Zend_Json::encode($album); 
?> 
<tr> 
    <td><?php echo $this->escape($album->tstamp);?></td> 
    <td><?php echo $this->escape($album->title);?></td> 
    <td><?php echo $this->escape($album->place);?></td> 
    <td class="link" onclick="popup(<?php echo $jsonalbum; ?>)">>></td> 
    <td> 

(...)

$专辑中收录并显示数据,但$ jsonalbum是空的!而我不能找到最新的错误.. 任何帮助? 谢谢!

巴勃罗

+0

我可以建议你尝试json_encode代替Zend_Json :: encode来查看它是否存在与你的$ albums数组相关的问题或Zend_Json的问题。 – 2012-02-12 13:03:09

+0

的print_r $相册打印:一个Zend_Db_Table_Row对象([_data:保护] =>阵列([ID] => 1 [艺术家] =>保罗Nutine [标题] =>煎一面[TSTAMP] => 2012-02-04 21点十六分44秒[用户] => [地点] => [描述] =>)(...)和为$ jsonalbum打印的print_r:{} {} {} {} {}与两个(Zend_jason :: enconde 。和json_encode) – user968865 2012-02-12 13:18:09

+0

得到了它,我不得不行对象转换为数组第一从这里拍!http://framework.zend.com/manual/en/zend.db.table.row.html例4。谢谢! – user968865 2012-02-12 13:24:46

回答

0

JSON不允许对象引用,所以应注意不要与编码递归引用的对象。如果你有递归,Zend_Json ::编码()和Zend_Json_Encoder ::编码()问题允许一个可选的第二个参数来检查递归;如果一个对象被序列化两次,则会抛出异常。

在这个也许错吗?

1

根据您的意见,您的相册的属性得到保护,并根据Zend_Json文档,Zend_Json ::编码()只能访问公共属性。

如果默认编码PHP对象,则编码机制只能访问这些对象的公共属性。当一个方法toJson()在要编码的对象上实现时,Zend_Json调用此方法并期望该对象返回其内部状态的JSON表示。

Zend_Json Documentation

相册中的实现方法的toJSON(),才能把它变成JSON

1

尝试转换为数组:$jsonalbum = Zend_Json::encode((array) $album);

+0

+1,很好的回答! – SagarPPanchal 2014-05-07 05:45:42