CakePHP4 で JSON形式で出力

スポンサーリンク

CakePHP4 の AppController でJSON形式で出力する _renderJson というメソッドを定義

class AppController extends Controller
{
    (略)

    protected function _renderJson( $inOutput , $force = false) {
        // JSON で出力
        $this->set('output', $inOutput);
        $this->viewBuilder()
            ->setClassName('Json')
            ->setOption('serialize', ['output']);

        if($force){
            $this->viewBuilder()->setOption('jsonOptions', JSON_FORCE_OBJECT);
        }
    }
}

呼び出しは

$students = ['students' => ['hoge','ふが','fuga']];
$this->_renderJson($students);

出力結果

{
    "output": {
        "students": [
            "hoge",
            "\u3075\u304c",
            "fuga"
        ]
    }
}

第二パラメータをtrueにすると

$this->_renderJson($students, true);
{
    "output": {
        "students": {
            "0": "hoge",
            "1": "\u3075\u304c",
            "2": "fuga"
        }
    }
}