如何获得这种格式:
{
"products": [
{
"id": 4,
"link": "/product.php?id_product=4",
"quantity": 1,
"priceByLine": "$185.00",
"name": "Orci hendrer...",
"price": "$185.00",
"idCombination": 0,
"hasAttributes": false,
"hasCustomizedDatas": false,
"customizedDatas":[
]
}, {
"id": 5,
"link": "/product.php?id_product=5",
"quantity": 1,
"priceByLine": "$215.00",
"name": "Semper rutru...",
"price": "$215.00",
"idCombination": 0,
"hasAttributes": false,
"hasCustomizedDatas": false,
"customizedDatas":[
]
}],
}
作为 PHP 数组?我试过了
$array[] = array('id'=>5, link => 'product.php?id_product=5' ... and so on)
但是当我使用 JSON 编码时,它不起作用。
您只需要以正确的方式嵌套数组,如以下示例所示。
$arr = array( 'products' => array(
array('id'=>4, link => 'product.php?id_product=4' ),
array('id'=>5, link => 'product.php?id_product=5' )
)
);
编辑
在您的代码中,初始化对象如下所示:
$arr = array( 'products' => array() );
每个后续产品都可以像这样添加(例如,在解析数据库结果的循环中):
$arr['products'][] = array('id'=>5, link => 'product.php?id_product=5' );
$data = array(
'products' => array(
array('id'=>5, link => 'product.php?id_product=5' ... and so on),
array('id'=>5, link => 'product.php?id_product=5' ... and so on)
// repeat once for element.
)
);
json_encode($data);
如果需要以 JSON 格式返回 AJAX 响应 - 则需要添加标头。
<?php
header("Content-type: application/json");
echo json_encode($array);
否则 - 您可以将数组打印到 JS 全局变量中。
<?php
echo '<script>';
echo 'var foo = ' . json_encode($array); . ';';
echo '</script>';
这是 json_encode($array)
的输出,其中$array
嵌套。