2012-02-12 3 views
1

Имея этот код:Зенда объект 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, чтобы узнать, есть ли проблема с вашим массивом альбомов или проблема с Zend_Json. –

+0

print_r из $ album prints: Zend_Db_Table_Row Object ([_data: protected] => Array ([id] => 1 [artist] => Paolo Nutine [title] => Sunny Side Up [tstamp] => 2012-02-04 21:16:44 [user] => [place] => [description] =>) (...) и print_r из $ jsonalbum prints: {} {} {} {} {} с обоими (Zend_jason :: enconde и json_encode) – user968865

+0

получил это. Мне пришлось сначала преобразовать объект строки в массив! как взято здесь: http://framework.zend.com/manual/en/zend.db.table.row.html пример 4. спасибо! – user968865

ответ

0

JSON не позволяет ссылки на объекты, поэтому следует соблюдать осторожность, чтобы не кодировать объекты с рекурсивными ссылками. Если у вас есть проблемы с рекурсией, Zend_Json :: encode() и Zend_Json_Encoder :: encode() разрешают необязательный второй параметр для проверки на рекурсию; если объект сериализуется дважды, генерируется исключение.

Возможно, ошибка в этом?

1

В соответствии с вашим комментарием атрибуты вашего альбома защищены и согласно документации Zend_Json, Zend_Json :: encode() может иметь доступ только к публичным атрибутам.

Если вы кодируете объекты PHP по умолчанию, механизм кодирования может иметь доступ только к общедоступным свойствам этих объектов. Когда метод toJson() реализуется на объекте для кодирования, Zend_Json вызывает этот метод и ожидает, что объект вернет представление JSON своего внутреннего состояния.

Zend_Json Documentation

Реализовать метод toJson() в вашем альбоме, чтобы быть в состоянии превратить его в JSON

1

попробовать литье в массив: $jsonalbum = Zend_Json::encode((array) $album);

+0

+1, отличный ответ !!! – SagarPPanchal

Смежные вопросы