Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get response in JSON format in Yii2

Tags:

I'm trying to convert and array of response into JSON format. I have tried all the answers that were posted on SO and other websites like web1,web2 adding header('Content-Type: application/json') and then echo json_encode($data,JSON_PRETTY_PRINT); But I'm always getting the output in text format. Can some one help me in solving this.

Helpers Class:

public static function renderJSON($data) {     header('Content-Type: application/json');     echo json_encode($data,JSON_PRETTY_PRINT); } 

My Controller:

if ($model->login()) {     $user =  User::findByUsernameOrEmail($request->post('username'));     $userArray = ArrayHelper::toArray($user);     Helpers::renderJSON($userArray); 

I tried to printing the userArray and it looks like this:

Array (     [name] => abc     [lastname] => xyz     [username] => test_test ) 

Json output: (html/text)

{     "name": "abc",     "lastname": "xyz",     "username": "test_test" } 
like image 742
ASN Avatar asked Jan 16 '17 11:01

ASN


2 Answers

Set

\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 

in the controller's action somewhere before return.

like image 151
Bizley Avatar answered Sep 21 '22 14:09

Bizley


Since Yii 2.0.11 there is a dedicated asJson() method to return a response in JSON format. Run:

return $this->asJson($array); 

in your controller action.

like image 25
Andreas Hinderberger Avatar answered Sep 18 '22 14:09

Andreas Hinderberger