2012-02-12 64 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