我有返回场地菜单的服务,但如果菜单不存在,我应该返回{}作为输出,否则ios app无法解析响应和app销毁。 现在回应如下:
{
"response": []
}
我应该
{
"response": {}
}
使用PHP编程的API服务。 当菜单为空网址时:http://ilovejetset.com/api/v2/menu/index/422 存在某些菜单时:http://ilovejetset.com/api/v2/menu/index/423
创建回复的代码: 在'之后'功能:
$this->response->body(json_encode(array('response' => $this->response_json)));
没有菜单时:
$this->response_json = array();
答案 0 :(得分:3)
查看此页面:
Predefined Constants (JSON)更具体地说是JSON_FORCE_OBJECT
如果深度超过responses
的数据需要是一个数组,那么您需要首先对所有数据进行编码,然后对顶层进行编码。
$test = array(
"responses" => array()
);
echo json_encode($test, JSON_FORCE_OBJECT);
答案 1 :(得分:-1)
如果您需要一个对象,那么您还需要在PHP中创建一个对象。只要您使用数组,PHP最好将它们编码为JSON数组。
$data = new stdClass;
$data->foo = 'bar';
echo json_encode(array($data));
或:
echo json_encode(array((object)array('foo' => 'bar')));
答案 2 :(得分:-1)
如果你使用 json_encode 这个函数,你可以尝试将选项JSON_FORCE_OBJECT添加为fllows。
<?php
$var = array();
$var['response'] = array();
echo json_encode($var, JSON_FORCE_OBJECT);
$var1 = array();
$var1['response'] = array();
$var1['response']['name'] = 'jediliang';
echo json_encode($var1, JSON_FORCE_OBJECT);
?>
输出如下:
{"response":{}}{"response":{"name":"jediliang"}}
答案 3 :(得分:-1)
有关更多说明,请尝试以下示例
class a {
var $name;
};
$a = new a;
$a->name = array("name"=>"fname");
echo json_encode(array("a"=> $a, "name"=>array("fname","lname")));
希望它清除你所有的疑虑