在 Yii2 中获取 JSON 格式的响应

2022-08-30 17:19:27

我正在尝试将响应数组转换为JSON格式。我已经尝试了SO和其他网站(如web1web2添加)上发布的所有答案,然后我总是以文本格式获得输出。有人可以帮我解决这个问题吗?header('Content-Type: application/json')echo json_encode($data,JSON_PRETTY_PRINT);

助手类:

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

我的控制器:

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

我试图打印,它看起来像这样:userArray

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

Json output: (html/text)

{
    "name": "abc",
    "lastname": "xyz",
    "username": "test_test"
}

答案 1

设置

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

在 控制器的操作之前某个地方。return


答案 2

从 Yii 2.0.11 开始,有一个专用的 asJson() 方法来返回 JSON 格式的响应。跑:

return $this->asJson($array);

在控制器操作中。


推荐