Php 如何处理两个相邻的JSON对象?

Php 如何处理两个相邻的JSON对象?,php,json,Php,Json,我有一个API路由,它将数据库中的记录输出为JSON。我还想输出一个HTTP状态代码 我已经尝试在返回之前回显(如下所示)HTTP状态代码和消息,如上所述,它的功能是我想要的,但是,它不是有效的JSON,因为我最终得到了两个并排的JSON对象 以下是我的代码的简化视图: private function json_books() { $query = "SELECT title, description FROM books"; $params= []; //

我有一个API路由,它将数据库中的记录输出为JSON。我还想输出一个HTTP状态代码

我已经尝试在返回之前回显(如下所示)HTTP状态代码和消息,如上所述,它的功能是我想要的,但是,它不是有效的JSON,因为我最终得到了两个并排的JSON对象

以下是我的代码的简化视图:

private function json_books() {
  $query  = "SELECT title, description FROM books";
  $params= [];

  // creates and prints the HTTP status code message
  $msg = array("status" => "200", "message"=>"OK");
  echo json_encode($msg);

  //returns records from the database as JSON object
  return ($this->recordset->getJSONRecordSet($query, $params));
}


如果可以将记录集作为数组获取,请按如下方式执行:

private function json_books() {
  $query  = "SELECT title, description FROM books";
  $parameters = [];    // you are using the name "params" below!

  //returns records from the database as JSON object along the status message
  return json_encode(array(
    "status" => "200",
    "message" => "OK",
    "result" => $this->recordset->getRecordSet($query, $params)
  ));
}

您需要创建一个有效的json结构。像这样的

private function json_books() {
  $query  = "SELECT title, description FROM books";
  $parameters = [];

  // creates and prints the HTTP status code message
  $msg = array("status" => "200", "message"=>"OK");

  
  // This is prefered so you don't have to convert back and forth from json
  $records_array = $this->recordset->getArrayRecordSet($query, $params);
  
  // If you have to get the values as a json string then you need to convert them
  $records = $this->recordset->getJSONRecordSet($query, $params);
  $records_array = json_decode($records,true);
  
  $msg['data'] = $records_array;
  
  //returns records from the database as JSON string
  return json_encode($msg);
}

不要在函数中间回响作为返回的一部分。只需将http消息和记录集合并为一个数组/json@catcon我刚得到一个“array”的输出,你能给我一个关于如何构造数组和返回的提示吗?感谢这返回qeury字符串“SELECT title,description FROM books”,而不是查询结果。这段代码是假设的-我假设您有一个函数“getRecordSet($query,$params)”,它将以数组的形式返回查询结果,而不是以JSON格式返回查询结果的“getJSONRecordSet($query,$params)”