Один из способов ответить json-ом -- изменить перед инструкцией return действия контроллера формат ответа вызовом вроде:
\Yii::$app->response->format = Response::FORMAT_JSON;
После чего можно возвращать php-данные (объект или массив), которые будут автоматически сконвертированы в json/
Вот пример, где у нас уже есть json строка и просто хотим отдать её в ответ из действия контроллера (приходится перед отдачей переводить json данные в php-представление)