我正在尝试使用bootstrap typeahead插件,但我需要让我的JSON正确输出。
根据此页面上的最后一个示例,您可以在JSON响应中使用的不仅仅是key->value
:http://twitter.github.io/typeahead.js/examples/
以下是我的PHP代码:
$objDB = new DB;
$xml = $objDB->setStoredProc('shadowGetEmp')
-> setParam("ntid", $query)
-> execStoredProc()
-> parseXML();
foreach($xml->emp as $emp){
$name = $emp->FirstName .' '. $emp->LastName;
$qid = $emp->QID;
$empID = $emp->EmpID;
$users[] = array('name'=> $name, 'qid'=> $qid, 'empID'=> $empID);
}
header('Content-Type: application/json');
echo json_encode($users);
JSON响应如下所示:
[{
"name": "John Doe",
"qid": {
"0": "Q1234"
},
"empID": {
"0": "123"
}
}, {
"name": "Bob Jones",
"qid": {
"0": "Q5678"
},
"empID": {
"0": "456"
}
}, {
"name": "Mike James",
"qid": {
"0": "Q2233"
},
"empID": {
"0": "789"
}
}, {
"name": "Harry Potter",
"qid": {
"0": "Q2212"
},
"empID": {
"0": "223"
}
}]
如何将响应格式化为正确的JSON输出?
我认为它是因为关联数组,但不确定如何包含的不仅仅是键/值和格式化JSON。
答案 0 :(得分:0)
看起来$emp->QID
和$emp->EmpID
返回一个包含一个元素的数组。
修复在$emp
实例中分配这些变量的代码(更好,看起来应该只是数字/ id值,而不是数组)或在这里补偿它(脏解决方案,但会起作用)