2012-05-31 2 views
1

этот вопрос, похоже, много в Google, и я все еще не понимаю, как это сделать.Как преобразовать объект в json-данные с помощью рамки zend?

Я делаю fetchAll и я получить обратно либо объект или массив объектов:

если я var_dump это я получаю:

array(3) { 
    [0] object(Model_Model)#163 (55) { 
    ['_name':protected] = NULL 
    ['_info1':protected] = NULL 
    } 
    [1] object(Talents_Model)#172 (55) { 
    ['_name':protected] = NULL 
    ['_info1':protected] = NULL 
    } 
    [2]object(Talents_Model)#143 (55) { 

    ['_name':protected] = NULL 
    ['_info1':protected] = NULL 

    } 

} 

если я сделать $ это -> _ helper-> json ($ the_object); or json_encode` я получаю пустой JSON объектов [{}, {}, {}, {}]

есть способ преобразования этих объектов в JSON непосредственно, независимо от того, если есть один объект или массив из них ?

благодаря

я пишу то, что решатель эта проблема:

public static function getProperties($object) 
    { 
     $array = array(); 

     $reflection = new ReflectionObject($object); 

     foreach($reflection->getProperties(ReflectionProperty::IS_PROTECTED) as $property) 
     { 
      $property->setAccessible(TRUE); 
      if(!$property->isStatic()) 
      { 
       $array[preg_replace('/_/', '', $property->getName(), 1)] = $property->getValue($object); 
      } 
     } 

     if(empty($array)) return; 

     return $array; 
    } 

этот метод может быть изменен, чтобы быть немного более универсальным и я также использовать reflections новый в PHP 5.4

ответ

2

Настоящее вопрос не является преобразованием JSON, является то, что члены объекта не являются общедоступными!

Вы должны иметь возможность обходиться без труда, если знаете имена атрибутов или немного больше работаете, если вы этого не сделаете (например, с использованием отражения).

+0

в моей установке свойства защищен не являются проблемой. – Patrioticcow

2
$result=$this->fetchAll($select); 
$result=$result->toArray(); 

Я думаю, вы должны использовать json_encode

+0

ГДЕ МЕТОД 'toArray()'? – Patrioticcow

+0

toArray - это метод zend http://framework.zend.com/manual/en/zend.db.table.rowset.html#zend.db.table.rowset.to-array –

+0

выглядит как устаревший, но может быть полезно – Patrioticcow

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