我正在创建restful apis
,我有一个函数来发送yii1
这样的响应数据
public function sendResponse($data)
{
header('Content-Type: application/json; charset=utf-8');
echo CJSON::encode($data);
exit;
}
CJSON
无法使用 Yii2
,因此如何在Yii2
答案 0 :(得分:25)
无需像这样手动设置标题。
在特定的操作/方法中,您可以这样设置:
use Yii;
use yii\web\Response;
...
public function actionIndex()
{
Yii::$app->response->format = Response::FORMAT_JSON;
}
然后在那之后返回一个简单的数组:
return ['param' => $value];
您可以在官方文档here中找到此属性。
对于使用特殊ContentNegotiator
过滤器的多个操作,更灵活的方法是:
/**
* @inheritdoc
*/
public function behaviors()
{
return [
[
'class' => ContentNegotiator::className(),
'only' => ['index', 'view']
'formats' => [
'application/json' => Response::FORMAT_JSON,
],
],
];
}
还有更多设置,您可以在official docs中查看。
至于REST,基础yii\rest\Controller已经为json
和xml
设置了基础:
'contentNegotiator' => [
'class' => ContentNegotiator::className(),
'formats' => [
'application/json' => Response::FORMAT_JSON,
'application/xml' => Response::FORMAT_XML,
],
],
答案 1 :(得分:2)
您可以在yii2中使用Json类
yii\helpers\Json;
它包含以下方法:
Json::encode();
Json::decode();
这些方法直接将yii2 activerecord对象转换为json数组。
答案 2 :(得分:1)
::查找() - > asArray() - >所有(); 希望得到帮助。