Как сделать корректный вывод json?
Вы вот это:array(
                    'id' => $banner->id,
                    'url' => $banner->url,
                    'name' => $banner->name,
                    'image' => $banner->image
                );
Вкладываете в $this->data по ключу $key, отсюда следует, что $this->data - это массив, поэтому он декодится в скобочках [].
Попробуй json_encode($this->data, JSON_FORCE_OBJECT);