我正在尝试创建一个带有嵌套节点的JSON响应。第一个节点的数据来自一个名为"category"的表,第二个节点的信息来自另一个名"tracks"的表。"tracks"表中的每个"tracks通过"<strong]category_id>"与"category=strong>"表连接。到目前为止,我已经创建了这个响应,
{
"category": [
{
"category_id": "1",
"category_name": "Editor's Choice ",
"cover_url": "http://www.example.com"
},
{
"category_id": "2",
"category_name": "New Releases",
"cover_url": "http://www.example.com"
}
],
"success": 1
}
现在,我想要另一个子节点"track_list",该子节点的数据将来自"类别"数组内的"1tracks"表。最终的JSON可能是这样的,
{
"category": [
{
"category_id": "1",
"category_name": "Editor's Choice ",
"cover_url": "http://www.example.com",
"track_list": [
{
"track_id": "",
"track_name": ""
},
{
"track_id": "",
"track_name": ""
}
]
},
{
"category_id": "2",
"category_name": "New Releases",
"cover_url": "http://www.example.com",
"track_list": [
{
"track_id": "",
"track_name": ""
},
{
"track_id": "",
"track_name": ""
}
]
}
],
"success": 1
}
这是我已经试过的代码,
// array for JSON response
$response = array();
// include db connect class
require_once __DIR__ . '/db_connect.php';
// connecting to db
$db = new DB_CONNECT();
// get all category data name from table
$result = mysql_query("SELECT *FROM category") or die(mysql_error());
// check for empty result
if (mysql_num_rows($result) > 0) {
// looping through all results
// category node
$response["category"] = array();
while ($row = mysql_fetch_array($result)) {
// temp category array
$category = array();
$category["category_id"] = $row["category_id"];
$category["category_name"] = $row["category_name"];
$category["cover_url"] = $row["cover_url"];
// push single category into final response array
array_push($response["category"], $category);
}
// success
$response["success"] = 1;
// echoing JSON response
echo json_encode($response, JSON_PRETTY_PRINT);
} else {
// no category found
$response["success"] = 0;
$response["message"] = "No result found";
// echo no users JSON
echo json_encode($response, JSON_PRETTY_PRINT);
}
我不知道嵌套的JSON,因为我对PHP完全陌生。任何形式的帮助都将不胜感激。
像这样更改while
循环
while ($row = mysql_fetch_array($result)) {
// temp category array
$category = array();
$category["category_id"] = $row["category_id"];
$category["category_name"] = $row["category_name"];
$category["cover_url"] = $row["cover_url"];
$category_id = $row["category_id"];
$track_list = array(); // for track list information
//Get the tracks associated with category
$result_tracks = mysql_query("SELECT *FROM tracks WHERE category_id = $category_id") or die(mysql_error());
while ($row_track = mysql_fetch_array($result_tracks)) {
$track_list_temp = array();
$track_list_temp["track_id"] = $row_track["track_id"];
$track_list_temp["track_name"] = $row_track["track_name"];
array_push($track_list, $track_list_temp);
}
$category["track_list"] = $track_list; // track list in category array
// push single category into final response array
array_push($response["category"], $category);
}
使用
$tracklist_array["track_id"] = "value";
$tracklist_array["track_name"] = "value";
array_push($response["banner"]["tracklist"], $tracklist_array);