如何在yii2中将数组转换为json

Kul*_*ngi 11 rest yii2

我创造restful apis,我有一个函数发送响应数据yii1这样

public function sendResponse($data)
{
    header('Content-Type: application/json; charset=utf-8');
    echo CJSON::encode($data);
    exit;
}
Run Code Online (Sandbox Code Playgroud)

CJSON不可用,Yii2我怎么做Yii2

aro*_*hev 25

无需像这样手动设置标题.

在特定的操作/方法中,您可以这样设置:

use Yii;
use yii\web\Response;

...

public function actionIndex()
{
    Yii::$app->response->format = Response::FORMAT_JSON;
}
Run Code Online (Sandbox Code Playgroud)

然后在那之后返回一个像这样的简单数组:

return ['param' => $value];
Run Code Online (Sandbox Code Playgroud)

您可以在官方文档此属性在这里.

对于使用特殊ContentNegotiator过滤器的多个动作更灵活的方法:

/**
 * @inheritdoc
 */
public function behaviors()
{
    return [
        [
            'class' => ContentNegotiator::className(),
            'only' => ['index', 'view']
            'formats' => [
                'application/json' => Response::FORMAT_JSON,
            ],
        ],
    ];
}
Run Code Online (Sandbox Code Playgroud)

有更多设置,您可以在官方文档中查看.

至于REST,基础yii\rest\Controller已经为它设置了jsonxml:

'contentNegotiator' => [
    'class' => ContentNegotiator::className(),
    'formats' => [
        'application/json' => Response::FORMAT_JSON,
        'application/xml' => Response::FORMAT_XML,
    ],
],
Run Code Online (Sandbox Code Playgroud)

  • 感谢arogachev提供了很多信息.虽然我的问题只是如何在yii2中进行json编码,但你在设置标题上添加了一个很棒的信息非常感谢 (3认同)