在需要对外提供服务接口的时候,常常需要把从数据库中查询出来的数据对象转换为JSON格式的数据
Yii中提供很有用的方法:
CJSON::encode($object)
但该方法的缺省实现不能把关联对象的数据包含进去。
要输出关联数据,需要自己派生CJSON并重写encode方法:
case 'object': if ($var instanceof Traversable) { $vars = array(); foreach ($var as $k=>$v) $vars[$k] = $v; } else $vars = get_object_vars($var); // related foreach ($var->relations() as $key => $related) { if ($var->hasRelated($key)) { $vars[$key] = $var->$key; } } return '{' . join(',', array_map(array('CJSON', 'nameValue'), array_keys($vars), array_values($vars))) . '}';
iefreer