我有以下的JSON字符串:Zend框架2 - 返回JSON從控制器
var jsonString = '{"Users":[{"Name":"abc","Value":"test"},{"Name":"def","Value":"test"}]}';
我想使用ZF2的JsonModel類(Zend的\查看\型號\ JsonModel)控制器來呈現我的看法與上面的JSON字符串。但是,它似乎只需要一個數組而不是JSON字符串。
如何讓控制器返回一個JSON字符串?
感謝
我有以下的JSON字符串:Zend框架2 - 返回JSON從控制器
var jsonString = '{"Users":[{"Name":"abc","Value":"test"},{"Name":"def","Value":"test"}]}';
我想使用ZF2的JsonModel類(Zend的\查看\型號\ JsonModel)控制器來呈現我的看法與上面的JSON字符串。但是,它似乎只需要一個數組而不是JSON字符串。
如何讓控制器返回一個JSON字符串?
感謝
您必須使用acceptableViewModelSelector
控制器插件
public function listAction()
{
$acceptCriteria = array(
'Zend\View\Model\ViewModel' => array(
'text/html',
),
'Zend\View\Model\JsonModel' => array(
'application/json',
));
$viewModel = $this->acceptableViewModelSelector($acceptCriteria);
Json::$useBuiltinEncoderDecoder = true;
$itemsList = $this->getMyListOfItems();
return $viewModel->setVariables(array("items" => $itemsList));
}
另一個好處:解釋爲什麼使用這個插件
你不'噸需要使用JsonModel因爲你的JSON已經是「渲染」,所以,你可以直接在響應對象設置並返回它:
/**
* @return \Zend\Http\Response
*/
public function indexAction()
{
$json = '{"Users":[{"Name":"abc","Value":"test"},{"Name":"def","Value":"test"}]}';
$this->response->setContent($json);
return $this->response;
}
這將短路dispatch事件,所以該應用程序將返回您的響應立即,而無需調用視圖圖層來呈現它。
請參閱http://framework.zend.com/manual/2.2/en/modules/zend.mvc.examples.html#returning-early