Zend rpc json return 数组
Zend rpc json return array
您好,我有一个小问题我无法解决。我正在使用 ZendFramework 和 Apigility 编写 RPC 服务。响应必须是 json 数组。接下来是所有内容协商代码。
'controllers' => array(
'NmdaWebApi\V1\Rpc\Hola\Controller' => 'Json',
'accept_whitelist' => array(
'NmdaWebApi\V1\Rpc\Hola\Controller' => array(
0 => 'application/vnd.nmda-web-api.v1+json',
1 => 'application/json',
2 => 'application/*+json',
),
'content_type_whitelist' => array(
'NmdaWebApi\V1\Rpc\Hola\Controller' => array(
0 => 'application/json',
),
这就是我拥有控制器的方式
class HolaController extends AbstractActionController{
public function holaAction(){
return array(1,2,3,4,5);}}
这是返回的 json。
{"0":1,"1":2,"2":3,"3":4,"4":5}
我得到了这个列表,我想要一个数组。这是另一个例子。
return array(1,2,3,4,array(5,6,7));
{"0":1,"1":2,"2":3,"3":4,"4":[5,6,7]}
谁能告诉我如何避免这种情况?
Edit_1
我找到了解决方法。使用 HalJson 解决了这个问题。但我仍然不明白为什么它不能正常工作 Json。
'controllers' => array(
'NmdaWebApi\V1\Rpc\Hola\Controller' => 'HalJson',
在您的操作中,您必须 return JsonModel。为此,首先在 module.config.php:
中的 'view_manager' 部分下创建一个 'strategies' 键
'view_manager' => array(
'strategies' => array(
'ViewJsonStrategy',
),
),
现在您可以 return 在您的操作中使用 JsonModel:
$data = array(1, 2, 3, 4, 5);
return new JsonModel([
'data' => $data
]);
您好,我有一个小问题我无法解决。我正在使用 ZendFramework 和 Apigility 编写 RPC 服务。响应必须是 json 数组。接下来是所有内容协商代码。
'controllers' => array(
'NmdaWebApi\V1\Rpc\Hola\Controller' => 'Json',
'accept_whitelist' => array(
'NmdaWebApi\V1\Rpc\Hola\Controller' => array(
0 => 'application/vnd.nmda-web-api.v1+json',
1 => 'application/json',
2 => 'application/*+json',
),
'content_type_whitelist' => array(
'NmdaWebApi\V1\Rpc\Hola\Controller' => array(
0 => 'application/json',
),
这就是我拥有控制器的方式
class HolaController extends AbstractActionController{
public function holaAction(){
return array(1,2,3,4,5);}}
这是返回的 json。
{"0":1,"1":2,"2":3,"3":4,"4":5}
我得到了这个列表,我想要一个数组。这是另一个例子。
return array(1,2,3,4,array(5,6,7));
{"0":1,"1":2,"2":3,"3":4,"4":[5,6,7]}
谁能告诉我如何避免这种情况?
Edit_1
我找到了解决方法。使用 HalJson 解决了这个问题。但我仍然不明白为什么它不能正常工作 Json。
'controllers' => array(
'NmdaWebApi\V1\Rpc\Hola\Controller' => 'HalJson',
在您的操作中,您必须 return JsonModel。为此,首先在 module.config.php:
中的 'view_manager' 部分下创建一个 'strategies' 键'view_manager' => array(
'strategies' => array(
'ViewJsonStrategy',
),
),
现在您可以 return 在您的操作中使用 JsonModel:
$data = array(1, 2, 3, 4, 5);
return new JsonModel([
'data' => $data
]);