繁体   English   中英

如何使用PHP正确格式化JSON

[英]How to correctly format JSON using PHP

我正在尝试使用PHP创建RESTful API。 我无法以惯常的方式对其进行格式化。 希望能得到一些指导。 谢谢。

这是当前的JSON输出:

 [
    {
        "boardID": "12345",
        "MQ9": "673627",
        "MQ131": "87565",
        "MQ135": "67887",
        "longitude": "51.504425",
        "latitude": "-0.1291608",
        "time": "13:32",
        "date": "2018-03-14"
    },

这就是我想要实现的目标:

{
    "data": [
        {
        "boardID": "12345",
        "MQ9": "673627",
        "MQ131": "87565",
        "MQ135": "67887",
        "longitude": "51.504425",
        "latitude": "-0.1291608",
        "time": "13:32",
        "date": "2018-03-14"
   },

这是我的PHP:

<?php
  require 'connect.php';

  if(!$con){ 
  die('Could not connect: '.mysqli_error()); 
  } 

  $result = mysqli_query($con, "SELECT * FROM airQual"); 

  while($row = mysqli_fetch_assoc($result)
  { 
  $output[]=$row; 
  } 

  echo(json_encode($output, JSON_PRETTY_PRINT)); 

  mysqli_close($con);

  ?>

您可以通过以下两种方法之一执行此操作,但最简单的方法是将输出添加到另一个数组中:

$data = array('data' => $output);
echo(json_encode($data, JSON_PRETTY_PRINT)); 

例如:

$output = array('foo'=>1,'bar'=>2,'glorp'=>3);
$data = array("data" => $output);
echo(json_encode($data, JSON_PRETTY_PRINT)); 

退货

{
    "data": {
        "foo": 1,
        "bar": 2,
        "glorp": 3
    }
}

您也可以按照其他人的建议,通过以下方式将输出添加到另一个数组:

$output['data'] = array('foo'=>1,'bar'=>2,'glorp'=>3);
echo(json_encode($output, JSON_PRETTY_PRINT)); 

这将为您带来与上述相同的回报。

注意

您的代码中有错别字:

while($row = mysqli_fetch_assoc($result) // missing closing )

mysqli_error()需要连接:

 die('Could not connect: '.mysqli_error($con)); 

尝试这个:

<?php
  require 'connect.php';

  if(!$con){ 
  die('Could not connect'); 
  } 

  $result = mysqli_query($con, "SELECT * FROM airQual"); 

  while($row = mysqli_fetch_assoc($result))
  { 
  $output['data'][]=$row; 
  } 

  echo(json_encode($output, JSON_PRETTY_PRINT)); 

  mysqli_close($con);

  ?>

在创建数组时,输出正确。 如果需要对象,请创建一个对象!

做类似的事情;

$myOuput = new stdClass;
$myOuput->data = $output;
json_encode($myOutput);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM