获取从PHP ADO连接返回到MS Access DB的JSON
我正在尝试获取从MS Access DB查询返回的JSON字符串。我得到的记录集($rs)很好,但尝试循环返回JSON,而不知道记录集中的所有字段。下面返回我想要的内容,但在获取从PHP ADO连接返回到MS Access DB的JSON,php,json,ms-access,Php,Json,Ms Access,我正在尝试获取从MS Access DB查询返回的JSON字符串。我得到的记录集($rs)很好,但尝试循环返回JSON,而不知道记录集中的所有字段。下面返回我想要的内容,但在[[“aaa”:“bbb”,“ccc”:“ddd”]中不是我要找的[{…}] $num_columns = $rs->Fields->Count (); //echo $num_columns . "<br>"; $arrColumns = array(); for ($i=0; $i &l
[[“aaa”:“bbb”,“ccc”:“ddd”]
中不是我要找的[{…}]
$num_columns = $rs->Fields->Count ();
//echo $num_columns . "<br>";
$arrColumns = array();
for ($i=0; $i < $num_columns; $i++) {
$arrColumns[] = $rs->Fields($i);
}
$arrResult = array();
while (!$rs->EOF) {
$arrRow = array();
for ($i=0; $i < $num_columns; $i++) {
$arrRow[] = $arrColumns[$i]->value;
}
$arrResult[] = $arrRow;
$rs->MoveNext();
}
//var_dump($arrResult);
echo json_encode($arrResult);
//print_r($arrResult);
我的JSON像这样返回:[{“First”:“John”},{“Last”:“Doe”}]
包裹在对象中的数组。我需要返回一个对象或一个数组,这样我就可以在客户端处理:{“First”:“John”}、{“Last”:“Doe”}
$.getJSON('http://remote.domain.com/json.php?callback=?,函数(res){
警报(“结果:”+res.Last);
});
我想这可能是我
json\u编码($Array)的方式
和不使用类?如果要以[{…}]
格式返回,则需要将$arrRow
值从数组更改为类。为了简化,您可以利用
试着这样做:
while (!$rs->EOF) {
$arrRow = array();
$class = new stdClass();
$class->field1 = $arrColumns[1]->value;
$class->field2 = $arrColumns[2]->value;
$arrRow[] = $arrColumns[$i]->value;
$arrResult[] = $arrRow;
$rs->MoveNext();
}
echo json_encode($arrResult);
您没有它在
[[“aaa”:“bbb”,“ccc”:“ddd”]
中,因为它不是有效的json
数组格式。。。有关规格,请参阅
数组应表示为
而对象
你可以拥有的壁橱是
[["aaa","bbb"]["ccc","ddd"]]
非常感谢,这将解决我忽略的JSON对象问题,但我仍在尝试动态生成结果,而不必手动创建每一列。我的代码的第一部分似乎将列名作为对象返回。我无法将其转换为字符串或将其转换为字符串数组?似乎$arrColumns[]=$rs->Fields($i);将对象放入数组中?
while (!$rs->EOF) {
$arrRow = array();
$class = new stdClass();
$class->field1 = $arrColumns[1]->value;
$class->field2 = $arrColumns[2]->value;
$arrRow[] = $arrColumns[$i]->value;
$arrResult[] = $arrRow;
$rs->MoveNext();
}
echo json_encode($arrResult);
[["aaa","bbb"]["ccc","ddd"]]