需要从PHP生成一个对象的json数组


Need to generate a json array of objects from PHP

我有一个经过测试且运行良好的代码块,当json文件的格式如下时,它会读取json文件并将信息放入表中:

[
  {
    "title": "Title One",
    "hits": 99,
    "type": "Type 1",
    "id": "001"
  },
  {
    "title": "Title Two",
    "hits": 109,
    "type": "Type 2",
    "id": "002"
  },
  {
    "title": "Title Three",
    "hits": 119,
    "type": "Type 3",
    "id": "003"
  }
]

这是一个PHP对象数组。问题是,我在从PHP动态生成这个json时遇到了问题——上面的内容并没有生成——它只是前端的一个测试文件。我得到的最好的方法是生成一个数组数组,它不是由我的表读取的。我的PHP和相关部分的结尾如下:

do {
    $model[] = array(
                    'plays' => $row_GetTotalItems['Rows'],
                    'title' => $row_GetTotalItems['video_title'],
                    'id' => $row_GetTotalItems['videoID']
    );
 } while ($row_GetTotalItems = mysql_fetch_assoc($GetTotalItems));
}
} 
header("Content-type: application/json");
json_encode($model); 
print_r($model);
?>

关于如何正确生成json文件,以便在我的表查找它时对其进行格式化,有什么想法吗?

离开mysql_*,转到MySQLi或PDO,但对于这个问题,请获取对象。您还需要将JSON编码的字符串分配给某个东西,或者只分配给echo。其次,不要使用do,即使第一次或最后一次没有提取行:

while ($row_GetTotalItems = mysql_fetch_object($GetTotalItems)) {
    $model[] = $row_GetTotalItems;
}
header("Content-type: application/json");
echo json_encode($model); 

为了将来参考,您可以创建一个数组并强制转换为对象:

$model[] = (object)array('plays' => $row_GetTotalItems['Rows'],
                         'title' => $row_GetTotalItems['video_title'],
                         'id' => $row_GetTotalItems['videoID']
);