JSON编码的多维数组返回错误的语法(意外)

时间:2016-06-15 16:33:21

标签: javascript php arrays json multidimensional-array

我在PHP中有一个数组数组,我需要将其作为JSON发送到javascript。 PHP脚本和AJAX调用工作,但返回的JSON字符串不是可解析的JSON;它只是将数组粘在一起而没有分隔符或容器,而不是数组数组。

示例JSON字符串:

[{"id":"77","options":[],"price":"4.25","title":"Zeppoli's","spec":""}][{"id":"78","options":[],"price":"7.95","title":"Battered Mushrooms","spec":""}]

创建以上JSON字符串的PHP代码段:

$cartArr = array(); // array of objects to be jsonified
foreach($products as $product){
    unset($newItem);
    $newItem = array(
        "id" => $product['itemID'],
        "options" => $theseOptions,
        "price" => $product['price'],
        "title" => $product['name'],
        "spec" => $product["special"],
        "cartid" => $product['ID']
    );
    array_push($cartArr,$newItem); 
    echo json_encode($cartArr);
}

尝试使用JSON.parse()字符串将导致以下错误,除非手动更正字符串。

Uncaught SyntaxError: Unexpected token [

1 个答案:

答案 0 :(得分:2)

你在循环中构建json,这意味着你要输出MULTIPLE独立的json字符串,这是非法的语法。例如你在做什么

[0,1,2][3,4,5]

这是两个独立的阵列相互挤压。它必须更像是

[[0,1,2],[3,4,5]]

是有效的JSON。在完全构建PHP数据结构之后,编码为json LAST ,而不是在构建过程中零碎。

e.g。

foreach(...) {
   $array[] = more data ...
}
echo json_encode($array);