PHP和JSON - 结果中的额外逗号

时间:2016-10-25 17:07:25

标签: php json

我正在尝试以正确的格式返回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 "]}"

    ?>

2 个答案:

答案 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);