![](/img/trans.png)
[英]How to return valid JSON array by WordPress REST API .. Not JSON object?
[英]How to return a valid JSON object?
我剛剛進入php,並且JSON對象的返回存在問題。
這是代碼:
$stmt->bind_result($image_link, $start_time, $end_time, $viet_performer, $english_performer, $viet_event, $english_event, $day, $stage);
while($stmt->fetch())
{
echo json_encode([["image_link" => $image_link,"start_time" => $start_time, "end_time" => $end_time, "viet_performer" => $viet_performer,
"english_performer" => $english_performer, "viet_event" => $viet_event, "english_event" => $english_event, "day" => $day,
"stage" => $stage]]);
$stmt->bind_result($image_link, $start_time, $end_time, $viet_performer, $english_performer, $viet_event, $english_event, $day, $stage);
}
這基本上輸出:
{“ image_link”:“ schedule_music.jpg”,“ start_time”:“ 17:00”,“ end_time”:“ 18:30”,“ viet_performer”:“”,“ english_performer”:“”,“ viet_event”:“ “,” english_event“:” Tet Music“,” day“:0,” stage“:1} {” image_link“:” schedule_music.jpg“,” start_time“:” 11:00“,” end_time“:” 12 :00“,” viet_performer“:”“,” english_performer“:”“,” viet_event“:” Nh?c“,” english_event“:” Music“,” day“:1,” stage“:0}
//再次重復
但是,根據JSON驗證程序,它是無效的JSON對象。
我想產生一個有效的JSON,如下所示:
[{{“ image_link”:“ schedule_music.jpg”,“ start_time”:“ 17:00”,“ end_time”:“ 18:30”,“ viet_performer”:“”,“ english_performer”:“”,“ viet_event”: “”,“ english_event”:“ Tet Music”,“ day”:0,“ stage”:1},{“ image_link”:“ schedule_music.jpg”,“ start_time”:“ 11:00”,“ end_time”: “ 12:00”,“ viet_performer”:“”,“ english_performer”:“”,“ viet_event”:“ Nh?c”,“ english_event”:“ Music”,“ day”:1,“ stage”:0} ]
請注意開始/結尾方括號以及逗號分隔符。
我該如何實現?
這是一個更好的示例(在某處找到),我的輸出類似:
{
"id": "a1",
"session": "General",
"name": "Exhibitor Setup Begins",
"startTime": "0900",
"details": "9am Exhibitor Hall",
"png": "image",
"speaker1": "Johnson",
"speaker2": "Nelson",
"speaker3": ""
}{
"id": "b1",
"session": "General",
"name": "Conference Registration",
"startTime": "1000",
"details": "10am Noon Upper Level Lobby",
"png": "image",
"speaker1": "Jackson",
"speaker2": "",
"speaker3": ""
}
以及我希望輸出如何:
[
{
"id": "a1",
"session": "General",
"name": "Exhibitor Setup Begins",
"startTime": "0900",
"details": "9am Exhibitor Hall",
"png": "image",
"speaker1": "Johnson",
"speaker2": "Nelson",
"speaker3": ""
},
{
"id": "b1",
"session": "General",
"name": "Conference Registration",
"startTime": "1000",
"details": "10am Noon Upper Level Lobby",
"png": "image",
"speaker1": "Jackson",
"speaker2": "",
"speaker3": ""
}
]
關於更新的代碼,問題在於您正在分別編碼每個片段,而不是一次編碼所有數據。 嘗試這個:
$stmt->bind_result($image_link, $start_time, $end_time, $viet_performer, $english_performer, $viet_event,
$english_event, $day, $stage);
$data = [];
while ($stmt->fetch()) {
$data[] = [
"image_link" => $image_link,
"start_time" => $start_time,
"end_time" => $end_time,
"viet_performer" => $viet_performer,
"english_performer" => $english_performer,
"viet_event" => $viet_event,
"english_event" => $english_event,
"day" => $day,
"stage" => $stage
];
}
echo json_encode($data);
根據問題的早期版本進行回答:
看起來您想要一個對象數組:
echo json_encode([
[
"image_link" => $image_link,
"start_time" => $start_time,
"end_time" => $end_time,
"viet_performer" => $viet_performer,
"english_performer" => $english_performer,
"viet_event" => $viet_event,
"english_event" => $english_event,
"day" => $day,
"stage" => $stage
]
]);
請注意,包含字符串鍵的數組將由json_encode
轉換為對象。 在上面的代碼中,內部數組成為對象,而外部數組沒有。
這可能是一種更直觀的查看方式:
$objectOne = (object) [
"image_link" => $image_link,
"start_time" => $start_time,
"end_time" => $end_time,
"viet_performer" => $viet_performer,
"english_performer" => $english_performer,
"viet_event" => $viet_event,
"english_event" => $english_event,
"day" => $day,
"stage" => $stage
];
$objectTwo = (object) [
"image_link" => $image_link,
"start_time" => $start_time,
"end_time" => $end_time,
"viet_performer" => $viet_performer,
"english_performer" => $english_performer,
"viet_event" => $viet_event,
"english_event" => $english_event,
"day" => $day,
"stage" => $stage
];
echo json_encode([$objectOne, $objectTwo]);
正確的方法是先生成數據結構, 然后對其進行編碼:
$foo = [];
while($stmt->fetch()) {
$foo []= [
"image_link" => $image_link,
"start_time" => $start_time,
"end_time" => $end_time,
"viet_performer" => $viet_performer,
"english_performer" => $english_performer,
"viet_event" => $viet_event,
"english_event" => $english_event,
"day" => $day,
"stage" => $stage];
];
}
$json = json_encode($foo);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.