我的php端
$i = 1;
while ($row = mysql_fetch_array($query)) {
$productarray[$i][] = $row['product_id'];
$productarray[$i][] = $row['product_model'];
$productarray[$i][] = $row['product_type'];
$productarray[$i][] = $row['product_return'];
$i++;
}
$jsonstring = json_encode($productarray);
这就是我得到的这是一个有效的json字符串吗
{
"1":["1","HFJ5G1.5","plat","graviteits"],
"2":["2","HHJ5S2.5","holle plunjer","veer"],
"3":["3","HTJ5S7.5","inbouw","veer"]
}
我无法迭代,有人请告诉我如何迭代这个json
从json站点来看,我认为这就是格式,如果是这样,我如何将上面的json字符串更改为这种格式?
{
"1":[{"1","HFJ5G1.5","plat","graviteits"}],
"2":[{"2","HHJ5S2.5","holle plunjer","veer"}],
"3":[{"3","HTJ5S7.5","inbouw","veer"}]
}
您需要稍微重构一下PHP代码。尝试这样做:
$productarray = array();
while ($product = mysql_fetch_assoc($query)) { // NOTE: using associative array
$productarray[] = $product;
}
echo json_encode($productarray);
// Output
// [{
// "product_id": "1",
// "product_model": "HFJ5G1.5",
// "product_type": "plat",
// "product_rturn": "graviteits"
// }, {
// "product_id": "2",
// "product_model": "HHJ5S2.5",
// "product_type": "holle plunjer",
// "product_rturn": "veer"
// }, {
// "product_id": "3",
// "product_model": "HTJ5S7.5",
// "product_type": "inbouw",
// "product_rturn": "veer"
// }]
请注意,现在迭代变得非常容易。你可以这样做:
var o = [{
"product_id": "1",
"product_model": "HFJ5G1.5",
"product_type": "plat",
"product_rturn": "graviteits"
}, {
"product_id": "2",
"product_model": "HHJ5S2.5",
"product_type": "holle plunjer",
"product_rturn": "veer"
}, {
"product_id": "3",
"product_model": "HTJ5S7.5",
"product_type": "inbouw",
"product_rturn": "veer"
}];
for (var i = 0; i < o.length; i++) {
console.log("Product " + (i + 1) + " has model:" + o[i]["product_model"]);
console.log("Product " + (i + 1) + " has type:" + o[i]["product_type"]);
}
这样做:
$i = 0;
while ($row = mysql_fetch_array($query)) {
$productarray[$i]['id'] = $row['product_id'];
$productarray[$i]['model'] = $row['product_model'];
$productarray[$i]['type'] = $row['product_type'];
$productarray[$i]['ret'] = $row['product_return'];
$i++;
}
$jsonstring = json_encode($productarray);
JSON将如下所示:
[
{id:"1",model:"HFJ5G1.5",type:"plat",ret:"graviteits"},
{id:"2",model:"HHJ5S2.5",type:"holle plunjer",ret:"veer"},
{id:"3",model:"HTJ5S7.5",type:"inbouw",ret:"veer"}
]
现在在JS中,你可以循环如下:
for(i=0,i<jsonString.length;i++;){
id = jsonString[i].id;
model = jsonString[i].model;
type = jsonString[i].type;
ret = jsonString[i].ret;
}
{
"1":[{"1","HFJ5G1.5","plat","graviteits"}],
"2":[{"2","HHJ5S2.5","holle plunjer","veer"}],
"3":[{"3","HTJ5S7.5","inbouw","veer"}]
}
不是正确的对象。当你有一个"{}"时,你需要有一组由昏迷分隔的"名称:值"。
所以你可能有:
{
"1":["1","HFJ5G1.5","plat","graviteits"],
"2":["2","HHJ5S2.5","holle plunjer","veer"],
"3":["3","HTJ5S7.5","inbouw","veer"]
}
或
{
"1":[{nameField1:"1",nameField2:"HFJ5G1.5",nameField3:"plat",nameField4:"graviteits"}], // one object in the array
...
}
第一个字符串是有效的JSON,第二个不是。您可以在线查看(见谷歌,有JSON语法检查网站)或在带有窗口的浏览器控制台中查看。JSON.parse()(任何现代浏览器,旧浏览器都没有window.JSON)。由于这是一个可以使用迭代的对象
for (var i in o) {
//do something with o[i]
}
或者,您可以只更改[]的{},并删除关键字字符串":",然后拥有一个数组:
//Input JSON string:
//[
// ["1","HFJ5G1.5","plat","graviteits"],
// ["2","HHJ5S2.5","holle plunjer","veer"],
// ["3","HTJ5S7.5","inbouw","veer"]
//]
JSON.parse('[["1","HFJ5G1.5","plat","graviteits"],["2","HHJ5S2.5","holle plunjer","veer"],["3","HTJ5S7.5","inbouw","veer"]]')
//(to test it - works.)