Php 更改RESTAPI的响应格式
我正在用PHP处理RESTAPI响应。 以下是生成响应的我的后端:Php 更改RESTAPI的响应格式,php,json,api,Php,Json,Api,我正在用PHP处理RESTAPI响应。 以下是生成响应的我的后端: $query = $this->db->query("SELECT some_params from some_table "); $result = $query->result(); foreach($result as $row){ $obj[] = array( 'title' => $row['title'], 'price'
$query = $this->db->query("SELECT some_params from some_table ");
$result = $query->result();
foreach($result as $row){
$obj[] = array(
'title' => $row['title'],
'price' => $row['price'],
);
}
print_r(json_encode($obj));
有了它,我得到了以下响应:json对象的数组
[
{
"title":"Marketing",
"price":"0"
},
{
"title":"SAP B1",
"price":"10"
}
]
我想做的是返回一个新对象,如下所示:
有人知道我该如何实现这一点吗?谢谢 您可以很容易地拥有一个类或函数来为您实现这一点。下面这样的事情应该会有所帮助
// provided you are using php > 7 . otherwise parmas
// can become $data, $apiversion ( without typecasting )
function api_reponse(array $data, string $apiVersion)
{
return json_encode([
'apiVersion' => $apiVersion,
'data' => $data
])
}
然后你可以使用
$query = $this->db->query("SELECT some_params from some_table ");
$result = $query->result();
foreach($result as $row){
$obj[] = array(
'title' => $row['title'],
'price' => $row['price'],
);
}
print_r( api_response($obj, '2.0') );
您所说的是无效的JSON。一个有效的版本将与您已有的版本完全相同,只是将一个级别嵌套在另一个(关联)数组中。@PatrickQ谢谢您的回答!让我看看我是否拿到了。。。。我可以在第二个例子中提出的结构中使用第一个例子中的对象数组,是吗?基本上是的。
$query = $this->db->query("SELECT some_params from some_table ");
$result = $query->result();
foreach($result as $row){
$obj[] = array(
'title' => $row['title'],
'price' => $row['price'],
);
}
print_r( api_response($obj, '2.0') );