我正在尝试以正确的格式返回json响应,但我在返回的代码中得到一个额外的'逗号'(最后一项'Pencil'之后的逗号):
{
"results": [{
"ItemID": 1,
"ItemName": "Ball"
}, {
"ItemID": 2,
"ItemName": "Pen"
}, {
"ItemID": 3,
"ItemName": "Pencil"
},
}]
}
我尝试了不同的东西,但我无法摆脱它。有人会知道如何删除它吗?
我的代码是:
<?php
print '{"results":[';
for ($i=0; $i <$numrows; $i++) {
$stmt->fetch();
$JSONArray = array(
"ItemID" => $ItemID,
"ItemName" => $ItemName
);
print ",";
print json_encode($JSONArray);
}
print "]}"
?>
答案 0 :(得分:4)
你这样做完全错了。您正在输出多个独立的JSON字符串,这是完全错误的。 JSON是一个单一的“结构”,并且逐个构建它是非常危险的。
简单:不要那样做。
您构建一个标准的PHP数组,然后在完成构建时执行ONE SINGLE编码:
$arr = array();
for(...) {
$arr[] = ... add stuff ..
}
echo json_encode($arr);
答案 1 :(得分:0)
首先,获取绑定变量会导致额外的步骤,其次,您不需要构造任何JSON。只需将所有行放入正确的数组结构并编码:
$result = $stmt->get_result();
while($rows['results'][] = $result->fetch_array(MYSQLI_ASSOC)){}
echo json_encode($rows);
如果您的系统支持它,只需使用此代替while
循环:
$rows['results'] = $result->fetch_all(MYSQLI_ASSOC);